我有这个模型:
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')
在那个结果是正确的,但我有许多用户的重复 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')
没有什么对我有用,我缺少一些东西,但我无法识别它。