按两个字段而不是仅一个字段过滤Wagtail API响应

时间:2019-04-30 15:39:03

标签: django-rest-framework wagtail wagtail-apiv2

我正在使用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

其结果将仅返回符合两者条件的记录。

更新 以下是一些代码片段供参考:

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类型的记录”,换句话说,是所有AND语句。但是相反,发生的事情是我获得了url_slug的记录,而locale_code似乎并不影响结果。

0 个答案:

没有答案