Python Django-类似/跟随按钮的问题';s
我想在用户帖子上创建一个like/follow系统 由于许多用户能够喜欢一篇文章,并且用户能够喜欢许多文章,所以我制作了两个不同的模型 Models.py: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
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