Skip to main content
 首页 » 编程设计

python之如何在 Django 中为答案投票

2025年01月19日22jillzhang

我正在为简单的问答论坛开发网站。我想得到一个答案。

模型.py

class Answer(models.Model): 
    ans = models.TextField() 
    img = models.CharField(max_length=100) 
    created_by = models.ForeignKey(User, related_name='answer') 
    created_on = models.DateTimeField(auto_now_add=True) 
    ques = models.ForeignKey(Question, related_name='answer') 
    def __str__(self): 
        return self.ans 
 
class Upvote(models.Model): 
    upvote = models.BooleanField(default=False) 
    upvote_by = models.ForeignKey(User, related_name='upvote') 
    upvoted_on = models.DateTimeField(auto_now_add=True) 
    #ques = models.ForeignKey(Question, related_name='upvote') 
    ans = models.ForeignKey(Answer, related_name='upvote') 
    def __str__(self): 
        return self.upvote_by 

views.py

我可以获得如下答案的赞成票

 answer = get_object_or_404(Answer, pk=1) 
 upvotes = Upvote.objects.filter(ans=answer) 

如何从答案对象中获得赞成票?如果我错了,请纠正我。像下面这样的东西,

answer.upvote_set 

提前致谢!!

请您参考如下方法:

鉴于您在模型中显示的这个字段:

class Upvote(models.Model): 
    # ... other code ... 
    ans = models.ForeignKey(Answer, related_name='upvote') 
    # ... other code ... 

您可以访问像这样的答案的赞成票

answer_instance.upvote.all() 

如果您将字段定义更改为此(删除 related_name):

ans = models.ForeignKey(Answer) 

您应该能够使用您询问的代码:

answer_instance.upvote_set.all()