Есть ли способ использовать django-filter с внешним ключом? Например:
модели.py
class Company(models.Model):
name = models.Charfield(max_length=50, null=False, blank=False)
location = models.Charfield(max_length=50, null=False, blank=False)
class Person(models.Model):
first_name = models.Charfield(max_length=50, null=False, blank=False)
last_name = models.Charfield(max_length=50, null=False, blank=False)
age = models.Integerfield()
company = models.ForeignKey(Company, null=False, blank=False, on_delete=models.CASCADE)
фильтры.py
class PersonFilter(django_filters.FilterSet):
class Meta:
model = Person
fields = [
'first_name ',
'last_name ',
'company ',
]
Прямо сейчас я знаю, как фильтровать только всю компанию, и часто это совершенно нормально, но есть ли способ, например, отфильтровать «loaction» или любые другие значения, если они связаны с ForeignKey? А если нет, есть ли решение лучше, чем django-filter?
Да! Как и в Django, используйте синтаксис отношения django __
.
class PersonFilter(django_filters.FilterSet):
class Meta:
model = Person
fields = [
'first_name ',
'last_name ',
'company',
'company__location',
]
Такое отличное решение! Большое спасибо!