django - 具有不同 AND order_by 的 Django FilterSet
问题描述
我想使用 django-filter 为字段 A(Minutes.case)创建一个具有不同结果的 FilerSet,按字段 B(case__case_filed_date)排序。数据库是 PostgreSQL。
MinutesListView 类中的注释行是我尝试过的(在各种配置中)。
模型.py
class Case(models.Model):
case_filed_date = models.DateField()
case_number = models.CharField(max_length=25, unique=True)
as_of_timestamp = models.DateTimeField()
def __str__(self):
return self.case_number
class Minutes(models.Model):
case = models.ForeignKey(Case, on_delete=models.CASCADE)
minute_entry_text = models.TextField(blank=True, null=True)
minute_entry_date = models.DateField(blank=True, null=True)
minute_entry_type_text = models.CharField(max_length=255, blank=True, null=True)
过滤器.py
class MinuteFilterSet(df.FilterSet):
case__case_number = df.CharFilter(lookup_expr='icontains', label='Case Number', distinct=True)
minute_entry_text = df.CharFilter(lookup_expr='icontains', label='Minutes Text')
class Meta:
model = Minutes
fields = ['minute_entry_text']
order_by = ['-case__case_filed_date']
视图.py:
class FilteredListView(ListView):
filterset_class = None
def get_queryset(self):
# Get the queryset however you usually would. For example:
queryset = super().get_queryset()
# Then use the query parameters and the queryset to
# instantiate a filterset and save it as an attribute
# on the view instance for later.
self.filterset = self.filterset_class(self.request.GET, queryset=queryset)
# Return the filtered queryset
return self.filterset.qs
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# Pass the filterset to the template - it provides the form.
context['filterset'] = self.filterset
return context
class MinutesListView(FilteredListView):
filterset_class = filters.MinuteFilterSet
paginate_by = 25
# ordering = '-case__case_filed_date'
# queryset = Minutes.objects.all()
queryset = Minutes.objects.distinct('case')
当前代码显示了不同的、无序的结果。当我能够获得有序结果时,案例(case_number)被重复。我已经在 Django/PostGreSQL 中阅读了关于 distinct() 和 order_by() 的文档,但我仍然缺少一些东西。
解决方案
推荐阅读
- java - 如何实现多选recyclerview?
- android - 如何从数组编辑文本中获取字符串
- c++ - 为什么会出现分段错误
- javascript - 对 Spring Boot Endpoint 的 Ajax 请求读取 HTTP MSG 失败
- vba - 编辑自动转发的电子邮件以在开始时删除行
- javascript - 如何上传项目中但不属于 Firebase 存储输入的图像?
- ruby-on-rails - 如何使用 Nokogiri 将具有名称空间的节点树插入现有 XML 文件?
- java - 它是一个简单的 Java HashMap,如何在各个存储桶中添加元素
- spring-boot - 如何生成 Map 类型的 RequestBody
使用springdoc swagger open api 3.0? - vb.net - Win10程序上的VB .Net无法运行