You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Django模板中使用Filter Queryset的技术咨询

关于Django模板中使用Filter处理Queryset的咨询

我目前仍在校学习,是Python语言及Django框架的新手,正通过项目实践学习最佳开发实践。当前我正在开发一个类似StackOverflow的项目,包含以下核心模型:

  • Topic模型:用户可发布新话题
  • Reply模型:用户可针对特定话题发布回复
  • Likes模型:用户可对话题或回复进行点赞/点踩

以下是项目的models.py代码:

class Topic(models.Model):
    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    title = models.CharField(max_length=400)
    like = models.IntegerField(default=0)
    dislike = models.IntegerField(default=0)
    image = models.FileField(blank=True, null=True)
    created_date = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title[0:51]

class Reply(models.Model):
    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    reply = models.TextField()
    created_date = models.DateTimeField(auto_now=True)

    def likes(self):
        return Likes.objects.filter(reply=self, reply_flag=1).count()
    likes.short_description = 'likes'

    def dislikes(self):
        return Likes.objects.filter(reply=self, reply_flag=-1).count()
    dislikes.short_description = 'dislikes'

    def __str__(self):
        return self.reply

class Likes(models.Model):
    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    reply = models.ForeignKey(Reply, on_delete=models.CASCADE)
    reply_flag = models.CharField(max_length=5, choices=[('1', 'Like'), ('-1', 'Dislike')])

想请教一下,我该如何在Django模板中使用Filter处理Queryset呢?

内容的提问来源于stack exchange,提问作者dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:51:10