Скажем, у меня есть следующие две модели Django:
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
name = models.CharField(max_length=300)
pages = models.IntegerField()
author = models.ForeignKey(Author)
С django-filter
, как я могу написать FilterSet
, который позволяет мне фильтровать что-то вроде:
Author.objects.filter(
(Q(book__name__contains='How') & Q(book__pages=100)) |
(Q(book__name__contains='Why') & Q(book__pages=50))
)
То есть я хочу иметь набор полей фильтра, которые все применяются к связанной модели и которые я могу комбинировать. В моем случае этот набор содержит гораздо больше полей, поэтому пользовательский MultiValueField
, вероятно, не применим.
Есть ли какой-нибудь стандартный способ решить эту проблему с помощью django-filter
, или мне следует реализовать собственную логику фильтрации в представлении?
Q
, по которым вы хотите фильтровать? - person Sherpa   schedule 16.11.2016