我有两个模型,分别是Form和Row,每行都有一个FK。我想按上一行添加的时间对表单进行排序。
class Form(models.Model):
...
class Row(models.Model):
form = models.ForeignKey(
Form,
related_name="rows",
)
created_at = models.DateTimeField(
auto_now_add=True,
)
我尝试了这个,但是没有用:
queryset = Form.objects.filter(is_empty=False)
queryset = queryset.annotate(last_submit=Max("rows__created_at")).order_by('-last_submit')
注解后,您需要调用order_by()
方法。
order_by()
[在查询集的开头看不到新创建的sorted_qs = Form.objects.filter(is_empty=False
).annotate(last_submit=Max("rows__created_at")
).order_by('-last_submit')
实例的一个可能的原因是,某些Form
对象可能没有Row
值,因此成为第一个。在这种情况下,可以通过设置[created_at
来更改order by行为。有关更多详细信息,请参阅此SO帖子,nulls_last=True