Say, я две следующие модели Django:Объединение нескольких фильтров на querysets с Джанго фильтром
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
, или я должен реализовать свою собственную логику фильтрации в представлении?
Что бы запрос querystring выглядит здесь? Как бы вы дифференцировали два набора объектов 'Q', которые вы хотите фильтровать? – Sherpa
'? Book_name_1 = How & book_pages_2 = 100 & book_name_2 = why & book_pages_2 = 50' – janoliver