【发布时间】:2018-02-15 03:46:38
【问题描述】:
我正在使用django-filter 过滤我的数据。问题在于过滤器的可用选项和结果基于所有数据,而不仅仅是当前用户。
models.py
class Product(models.Model):
title = models.CharField(max_length=264)
description = models.CharField(max_length=264)
date_added = models.DateField(auto_now_add=True)
time_added = models.TimeField(auto_now_add=True)
user = models.ForeignKey(User, default=1, on_delete=models.CASCADE)
我使用下面的代码仅过滤当前用户的结果:
filters.py
class ProductFilter(django_filters.FilterSet):
class Meta:
model = Product
@property
def qs(self):
parent = super(ProductFilter, self).qs
user = getattr(self.request, "user", None)
return parent.filter(user=user).order_by("-timestamp")
在我的views.py 中,我尝试传递查询集,但没有任何改变:
class ProductsFilterView(LoginRequiredMixin, FilterView):
model = Product
filterset_class = ProductFilter
def get_queryset(self, **kwargs):
return self.model.objects.filter(user=self.request.user)
我不确定如何仅针对当前用户的数据限制可用的过滤器选项。
所以,总结一下如何只将当前用户的数据传递到过滤器集中,而不是将整个数据传递到过滤器集中,然后根据当前用户的数据过滤它们。
【问题讨论】:
-
你能分享你的“产品”模型吗?
-
我已经用 Product 模型更新了我的答案。
标签: python django django-filter