Django 如何按带批注的相关字段日期排序?
我有这个模型:Django 如何按带批注的相关字段日期排序?,django,django-models,django-related-manager,Django,Django Models,Django Related Manager,我有这个模型: class Node(MPTTModel): parent = TreeForeignKey('self', on_delete=models.CASCADE, blank=True, null=True, related_name='children') name = models.TextField(blank=True, null=True) 其中有以下相关模型: class Views(models
class Node(MPTTModel):
parent = TreeForeignKey('self', on_delete=models.CASCADE, blank=True, null=True, related_name='children')
name = models.TextField(blank=True, null=True)
其中有以下相关模型:
class Views(models.Model):
related_tree = models.ForeignKey(Node, on_delete=models.CASCADE, blank=True, null=True, related_name='related_views')
views_count = models.PositiveIntegerField(null=True, blank=True, default=0)
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, blank=True, null=True)
view_date = models.DateTimeField(default=timezone.now)
我试图做的是在第二个模型的查看日期之前订购第一个模型的查询集,这是我尝试过的视图:
last_viewed_trees = Node.objects.filter(tree_type='root').order_by('-related_views__view_date')
在这一个结果是正确的,但我有一个重复的视图和许多用户的日期。
我也尝试过这个,但没有成功:
last_viewed_trees = Node.objects.filter(tree_type='root').annotate(time_of_views= Min('related_views__views_count')
).order_by('-time_of_views')
last_viewed_trees = Node.objects.filter(tree_type='root').annotate(time_of_views= Max('related_views__views_count')
).order_by('-time_of_views')
没有任何东西对我有效,我缺少一些东西,但我无法识别。你应该使用
time\u of\u views=Min('related\u views\u view\u date')
(或者Max(…)
,如果你想要最新的)。我已经尝试了这两种方法,但都没有成功。我的错是,我已经检查了我的代码,我已经使用了Max,效果很好。谢谢你应该使用time\u of\u views=Min('related\u views\u view\u date')
(或者Max(…)
,如果你想要最新的)。我已经尝试了这两种方法,但都没有成功。我的错误是,我已经检查了我的代码,我已经使用了Max,而且效果很好。非常感谢。