У меня есть эти модели:
def Foo(Models.model):
size = models.IntegerField()
# other fields
def is_active(self):
if check_condition:
return True
else:
return False
def Bar(Models.model):
foo = models.ForeignKey("Foo")
# other fields
Теперь я хочу запросить Панели, которые имеют активного Foo как такового:
Bar.objects.filter(foo.is_active())
Я получаю ошибку такой как
SyntaxError at /
('non-keyword arg after keyword arg'
Как я могу достигнуть этого?
Вы не можете запрашивать методы или свойства модели. Либо используйте критерии внутри него в запросе, либо отфильтруйте в Python, используя понимание списка или genex.
Вы не можете фильтровать методы, однако, если метод is_active в Foo проверяет атрибут в Foo, вы можете использовать синтаксис с двойным подчеркиванием, например Bar.objects.filter (foo__is_active_attribute = True)