通过计算Django中ForeignKey的数量来过滤查询集的最佳方法

时间:2019-03-15 09:26:03

标签: django django-models

我有2个模型,分别是ChatRoom和Message:

模型聊天室:

class ChatRoom(models.Model):
    user = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='chat_creator', null=True, blank=True)
    with_user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name='room_user_with')

模型消息:

class Message(models.Model):
    chat = models.ForeignKey(ChatRoom, on_delete=models.CASCADE, related_name='message_room')
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='message_user')
    content = models.TextField()

我想通过获取其中包含10条以上消息的ChatRoom来过滤ChatRoom查询集。

做到这一点的最佳方法是什么?预先感谢!

1 个答案:

答案 0 :(得分:2)

}else {

         $message = "Credenciales incorrectas";
         echo "<script type='text/javascript'>alert('$message');</script>";
         header('Refresh: 0; URL=index.php');


      }

您的ChatRoom.objects.annotate(cnt=Count('message_room')).filter(cnt__gt=20) 具有误导性:);从外键引用的模型的角度来看,它们应该引用包含外键的模型。 related_namechat_messages