Python Django-类似/跟随按钮的问题';s

Python Django-类似/跟随按钮的问题';s,python,django,Python,Django,我想在用户帖子上创建一个like/follow系统 由于许多用户能够喜欢一篇文章,并且用户能够喜欢许多文章,所以我制作了两个不同的模型 Models.py: class Question(models.Model): user= models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) title = models.TextField() content = models.TextField() date_publ

我想在用户帖子上创建一个like/follow系统

由于许多用户能够喜欢一篇文章,并且用户能够喜欢许多文章,所以我制作了两个不同的模型

Models.py:

class Question(models.Model):
user= models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.TextField()
content = models.TextField()
date_published = models.DateTimeField(auto_now_add=True)
last_modified = models.DateTimeField(_('Last Edited'), auto_now=True)
slug = models.SlugField(max_length=255)

class Question_Follows(models.Model): 
question = models.ForeignKey(Question, on_delete=models.CASCADE)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
count = models.IntegerField(default=0)
views.py

class QuestionDetailView(DetailView):

model = Question
slug  = 'slug'
template_name = "questions/question_detail.html" 


 def get_context_data(self, **kwargs):
    context = super(QuestionDetailView, self).get_context_data(**kwargs)
    context['now'] = timezone.now()

    #obj= Question_Follows.objects.filter(id=question.id)
    #context['follow_count'] = Question_Follows.objects.filter(id='question.id')
    #obj.count <----- none of these have worked so far.


    return context
class QuestionDetailView(详细视图):
模型=问题
slug='slug'
template\u name=“questions/question\u detail.html”
def获取上下文数据(自身,**kwargs):
context=super(QuestionDetailView,self)。获取上下文数据(**kwargs)
上下文['now']=时区。now()
#obj=Question\u跟随.objects.filter(id=Question.id)
#上下文['follow\u count']=Question\u Follows.objects.filter(id='Question.id')
#obj.count几点:

  • 如果我正确理解了您的意图,您不应该需要
    count=models。下面是
    问题的IntegerField(默认值=0)
    。每次用户提出问题时,都会在此模型的数据库表中创建一个新行。一个用户能多次回答同一个问题吗?如果不是,则不需要计数字段
  • 该问题的以下数量应在视图中使用以下内容:

    def获取上下文数据(自身、kwargs):

  • 请注意,您需要为外键添加一个相关名称,因此它将是
    question=models.ForeignKey(question,on_delete=models.CASCADE,related_name='follows')
    ,才能工作

  • 用CamelCase(无下划线)命名Django模型是一种惯例,并且使用单数形式-因此
    Question_follow
    将是
    QuestionFollow

  • 有关模板问题的更多问题,请参阅我的评论-我怀疑您只是使用了错误的模板文件名。

    对不起,代码格式似乎有问题-不知道为什么,谢谢您的回答。上面的html名称只是一个类型,该文件实际上称为question_detail.html。我现在正在尝试您的解决方案,我会让您知道它是如何运行的。您已将模板列为“detailview.html”,但在视图代码中,您已指定
    “questions/question\u detail.html”
    作为模板名称。是哪一个?另外,在detailview.html中,您说过您试图通过
    {{{object.id}}
    获取对象id。这对我来说应该有用。你得到了什么?
    <div id="question_container">
    <input type='hidden' id="{{ object.id }}" name="id">  <--- tried this as a way to get question id -->
    <h1>{{ object.title }}</h1>
    <p>{{ object.content }}</p>
    <p>Published: {{ object.date_published|date }}</p>
    <p>Date: {{ now |date }}</p>
    
    <button class="follow"><span id='follow-span'>Follow| <strong id='follow-count'>{{ follow_count }}</strong> </button>
    </span></button>
    
    context = super(QuestionDetailView, self).get_context_data(**kwargs)
    context['now'] = timezone.now()
    context['follow_count'] = self.object.follows.count()
    return context