我正在使用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
我将此查询解释为“给我一个具有X locale_code,Y url_slug和Z类型的记录”,换句话说,是所有AND语句。但是相反,发生的事情是我获得了url_slug的记录,而locale_code似乎并不影响结果。