我有两张桌子。
class Writer(models.Model)
name = model.CharField()
...
class Article(models.Model)
name = model.CharField()
writer = model.ForeignKey('Writer', related_name="relationship")
...
我想构建一些获取作者列表的 API 端点,但这应该可以通过文章 id 进行过滤。
我正在使用 django-filter。所以:
class WriterViewSet(viewsets.ReadOnlyModelViewSet):
filter_backend = [filters.djangoFilterBackend],
filter_class = WriterFilter
class WriteFilter(django_filters.rest_framework.FilterSet):
....
所以我关心的是,如何定义 WriteFilter 来按文章过滤 Writer?
class WriteFilter(django_filters.rest_framework.FilterSet):
article = django_filters.CharFilter(name='relationship__name', lookup_expr='contains')
class Meta:
model = WriterFilter
fields = ['article']
你的网址将是这样的,
/api/wtiter/list/?article=somearticlename
UPDATE-1
since django-filter 2.0
, the name
参数改为field_name
.
因此过滤器类别将是,
class WriteFilter(django_filters.rest_framework.FilterSet):
article = django_filters.CharFilter(field_name='relationship__name', lookup_expr='contains')
class Meta:
model = WriterFilter
fields = ['article']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)