如何使用两个字段作为组合字段对django queryset进行排序
How to sort django queryset with two fields as a combined field
我有一个 Deadline
模型,它有两个字段,start_date
和 end_date
。
我想用这两个字段对查询集进行排序,但每个日期都有截止日期的副本
我尝试创建带注释的公共字段并通过它进行排序。
class Deadline(models.Model):
start_date = models.DateTimeField()
end_date = models.DateTimeField
dl_start = deadline_queryset.annotate(date=F('start_date'))
dl_end = deadlien_queryset.annotate(date=F('end_date'))
dl_all = dl_start.union(dl_end).order_by('date')
我需要事件的时间表。
考虑我的查询集是否有 2 个对象:
Deadline <id: 1, start_date: 12-dec, end_date: 24-jan>
Deadline <id: 2, start_date: 15-dec, end_date: 21-jan>
我需要一份截止日期列表,例如:
Deadline <id: 1, start_date: 12-dec, end_date: 24-jan, date: 12-dec>
Deadline <id: 2, start_date: 15-dec, end_date: 21-jan, date: 15-dec>
Deadline <id: 2, start_date: 15-dec, end_date: 21-jan, date: 21-jan>
Deadline <id: 1, start_date: 12-dec, end_date: 24-jan, date: 24-jan>
在我前面提到的代码中,带注释的字段在联合之后没有被继承,所以我无法在上面使用 order_by。
使用以下变体后有效:
dl_start = deadline_queryset.annotate(date=F('start_date')).values('id', 'start_date', 'end_date', 'date')
dl_end = deadlien_queryset.annotate(date=F('end_date')).values('id', 'start_date', 'end_date', 'date')
dl_all = dl_start.union(dl_end).order_by('date')
这帮助我继承了带注释的 date
字段。
我有一个 Deadline
模型,它有两个字段,start_date
和 end_date
。
我想用这两个字段对查询集进行排序,但每个日期都有截止日期的副本
我尝试创建带注释的公共字段并通过它进行排序。
class Deadline(models.Model):
start_date = models.DateTimeField()
end_date = models.DateTimeField
dl_start = deadline_queryset.annotate(date=F('start_date'))
dl_end = deadlien_queryset.annotate(date=F('end_date'))
dl_all = dl_start.union(dl_end).order_by('date')
我需要事件的时间表。
考虑我的查询集是否有 2 个对象:
Deadline <id: 1, start_date: 12-dec, end_date: 24-jan>
Deadline <id: 2, start_date: 15-dec, end_date: 21-jan>
我需要一份截止日期列表,例如:
Deadline <id: 1, start_date: 12-dec, end_date: 24-jan, date: 12-dec>
Deadline <id: 2, start_date: 15-dec, end_date: 21-jan, date: 15-dec>
Deadline <id: 2, start_date: 15-dec, end_date: 21-jan, date: 21-jan>
Deadline <id: 1, start_date: 12-dec, end_date: 24-jan, date: 24-jan>
在我前面提到的代码中,带注释的字段在联合之后没有被继承,所以我无法在上面使用 order_by。
使用以下变体后有效:
dl_start = deadline_queryset.annotate(date=F('start_date')).values('id', 'start_date', 'end_date', 'date')
dl_end = deadlien_queryset.annotate(date=F('end_date')).values('id', 'start_date', 'end_date', 'date')
dl_all = dl_start.union(dl_end).order_by('date')
这帮助我继承了带注释的 date
字段。