在我的模型中,我定义了一个思想和评论模型。有一种想法也有很多评论:
class Thoughts(models.Model):
name = models.CharField(max_length=30)
thought = models.CharField(max_length=500)
class Comments(models.Model):
name = models.CharField(max_length=30)
comment = models.CharField(max_length=200)
original_post = models.ForeignKey(Thoughts, default=0)在我的网站上,当你去看一个想法,我希望所有的评论出现。据我理解,您可以使用choice_set通过一对多的关系访问属性。以下是我的看法:
def thought(request, thought_num):
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
c = Comments.objects.create(name=form.cleaned_data['name'],
comment=form.cleaned_data['comment'])
c.save()
else:
form = CommentForm()
get_post = Thoughts.objects.get(pk=thought_num)
comments = get_post.choice_set.all()
return render(request, 'thought.html', {'form': form, 'comment':comments,})在这些行中,我尝试访问与特定思想相关的所有注释,以便在我的模板中打印它们。
get_post = Thoughts.objects.get(pk=thought_num)
comments = get_post.choice_set.all()当我访问应该显示注释的页面时,我会得到以下错误:
Exception Type: AttributeError
Exception Value:'Thoughts' object has no attribute 'choice_set'也许我错过了什么,我不确定。我肯定这很简单。耽误您时间,实在对不起
发布于 2015-09-25 22:01:27
检索与某个想法相关的所有注释。您可以执行以下操作:
Thoughts.objects.get(pk=thought_num).comments_set.all()
如果您想要覆盖默认的related_name ("comments_set")。您可以执行以下操作:original_post = models.ForeignKey(Thoughts, default=0, related_name='choice_set')
发布于 2015-09-25 23:02:47
当您生成一个ForeignKey时,默认的相关名称将变成当前类+ "_set“的小写名称,因此对于您的项目应该是:
get_post = Thoughts.objects.get(pk=thought_num)
comments = get_post.comments_set.all()或者您甚至可以创建一个与自定义相关的名称,而不是默认的名称:
class Thoughts(models.Model):
name = models.CharField(max_length=30)
thought = models.CharField(max_length=500)
class Thoughts(models.Model):
name = models.CharField(max_length=30)
thought = models.CharField(max_length=500)
class Comments(models.Model):
name = models.CharField(max_length=30)
comment = models.CharField(max_length=200)
original_post = models.ForeignKey(Thoughts, default=0, related_name='comments')这样你就可以得到这样的评论:
get_post = Thoughts.objects.get(pk=thought_num)
comments = get_post.comments.all()https://stackoverflow.com/questions/32790350
复制相似问题