在这种情况下,我不知道该怎么办。可能有人知道。
我有2个型号:
评论:
class Comments(models.Model):
text = models.CharField(max_length=300, null=False)
image = models.FileField(upload_to=user_directory_path_comments, validators=[validate_file_extension], blank=True, null=True)
articles = models.ForeignKey(Articles, verbose_name="Article", null=False)
author = models.ForeignKey(User, verbose_name="Auteur")
in_answer_to = models.ForeignKey('self', verbose_name="En réponse au commentaire", blank=True, null=True, on_delete=models.CASCADE)
date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de création")
update = models.DateTimeField(auto_now=True, verbose_name="Dernière modification")
和Up模型:
class Up(models.Model):
comments = models.ForeignKey(Comments, verbose_name="Commentaire", null=True, blank=True)
user = models.ForeignKey(User, verbose_name="Auteur", null=False)
用户可以添加评论,他们可以" Up"一些有用的评论。
所以,默认情况下我想按日期订购评论。但是我想按照Up的数量优先订购。
为了让您了解注释和注册的注册方式,这是我的数据库的屏幕截图:
例如,id为50的注释从两个不同的用户中获得2 Up。所以它应该在列表的顶部,而评论49只有1 Up。
现在,我只是按日期使用订单,我需要Up的订单:
comments = Comments.objects.all().exclude(in_answer_to__isnull=False).order_by('-date')
我需要类似的东西:
comments = Comments.objects.all().exclude(in_answer_to__isnull=False).order_by('-date', 'Up')
答案 0 :(得分:0)
当您考虑以下订单问题的SQL时,您会发现您可能需要计算引用对象的数量
因此注释计数和顺序
comments = Video.objects.all().exclude(
in_answer_to__isnull=False
).annotate(
num_up=Count('up')
).order_by('-date', 'num_up')