اذهب إلى المحتوى

السؤال

نشر

لدي نموذجين Models مرتبطيت معًا على النحو التالي:

def Foo(Models.model):
    # ...

    def is_active(self):
         return True

def Bar(Models.model):
     foo = models.ForeignKey("Foo")
    
     # ...

الآن عندما أحاول أن أقوم بعمل إستعلام query بإستخدام التابع filter بالشكل التالي:

Bar.objects.filter(foo.is_active())

يظهر لي هذا الخطأ:

SyntaxError at ('non-keyword arg after keyword arg')

لم أفهم سبب الخطأ هنا، ويبدو الكود سليم بدون مشكلة، ما سبب الخطأ هنا؟ وكيف أقوم بإصلاحه؟

Recommended Posts

  • 1
نشر (معدل)

دالة filter لا تقبل ان تمرر لها دالة كدالة ()is_active فالحالة التي لديك الافضل إنشاء حقل BooleanField في model Foo وقم بإعطائه default True هكذا:

class Foo(models.Model):
    is_active = models.BooleanField(default=True)

ومن ثم لإرجاع الكائنات من Foo التي لديهم القيمة is_active = True نستعمل بدالة filter من Bar لفحص الكائنات المُرادة بتحديد قيمتها True هكذا:

Bar.objects.filter(foo__is_active=True)

هكذا سيرجع لك الكائنات من model ال Foo التي قيمة is_active = True .

تم التعديل في بواسطة Haroun Taha

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...