我有一个 django-filter FilterSet,它采用用户保存的链接的查询集。 Tags 是一个 ManyToManyField,我想将该选择范围缩小到由同一用户创建(拥有)的标签。完全不知所措 - 文档没有那么广泛。
class LinkFilter(django_filters.FilterSet):
class Meta:
model = Link
fields = ['title', 'domain', 'tags', 'date', 'modified']
请您参考如下方法:
我之前没有使用过 django-filter,但是查看文档,您应该能够执行如下操作。您需要在 LinkFilter 的构造函数中为关键字参数 user 传递要过滤的用户。否则它将继续显示所有用户的所有标签。我还猜测 Link 类上的 User ForeignKey 属性被命名为 created_by。
class LinkFilter(django_filters.FilterSet):
class Meta:
model = Link
fields = ['title', 'domain', 'tags', 'date', 'modified']
def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None):
super(LinkFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, strict=strict))
if user:
self.filters['tags'].filter(created_by=user)
