Я использую Wagtail API (построенный поверх Django Rest Framework) для запроса информации с нашего сайта. Я знаю, что могу отфильтровать ответ по APIField, используя имя поля и значение:
https://docs.wagtail.io/en/v2.5/advanced_topics/api/v2/usage.html#filtering
Однако я бы хотел использовать составной фильтр следующим образом:
?slug=my-url-slug&foo=bar
В результате будут возвращены только записи, которые соответствуют обоим критериям.
UPDATE
Вот некоторые фрагменты кода для справки:
class LandingPageBase(Page):
"""
LandingPageBase represents the base information needed for Eventbrite landing pages
"""
url_slug = models.SlugField(
max_length=255,
allow_unicode=True,
help_text='The slugified portion of a landing page url. Ex: sell-tickets',
)
locale = ParentalKey('home.Locale', on_delete=models.PROTECT, related_name='landing_pages')
api_fields = [
APIField('url_slug'),
APIField('locale_code'),
APIField('locale', serializer=serializers.StringRelatedField(source='locale_code')),
]
@property
def locale_code(self):
return self.locale.code
И вот URL, который я использую.
http://localhost:32815/api/v2/page/?locale_code=de_de&url_slug=my-cool-landing-page-french&type=landing.RawHtmlLandingPage
Я интерпретирую этот запрос, чтобы сказать «Дайте мне запись, которая имеет X locale_code, Y url_slug и Z type», другими словами все операторы AND. Но вместо этого я получаю запись для url_slug, а код locale_code, похоже, не влияет на результат.