Фильтруйте ответ Wagtail API по двум полям вместо одного - PullRequest
0 голосов
/ 30 апреля 2019

Я использую 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, похоже, не влияет на результат.

...