首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:‘choice’对象没有属性'choice_set‘-访问选择集时出错

Django:‘choice’对象没有属性'choice_set‘-访问选择集时出错
EN

Stack Overflow用户
提问于 2015-09-25 20:41:14
回答 2查看 1.9K关注 0票数 0

在我的模型中,我定义了一个思想和评论模型。有一种想法也有很多评论:

代码语言:javascript
复制
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通过一对多的关系访问属性。以下是我的看法:

代码语言:javascript
复制
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,})

在这些行中,我尝试访问与特定思想相关的所有注释,以便在我的模板中打印它们。

代码语言:javascript
复制
    get_post = Thoughts.objects.get(pk=thought_num)
    comments = get_post.choice_set.all()

当我访问应该显示注释的页面时,我会得到以下错误:

代码语言:javascript
复制
Exception Type: AttributeError
Exception Value:'Thoughts' object has no attribute 'choice_set'

也许我错过了什么,我不确定。我肯定这很简单。耽误您时间,实在对不起

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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')

票数 1
EN

Stack Overflow用户

发布于 2015-09-25 23:02:47

当您生成一个ForeignKey时,默认的相关名称将变成当前类+ "_set“的小写名称,因此对于您的项目应该是:

代码语言:javascript
复制
get_post = Thoughts.objects.get(pk=thought_num)
comments = get_post.comments_set.all()

或者您甚至可以创建一个与自定义相关的名称,而不是默认的名称:

代码语言:javascript
复制
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')

这样你就可以得到这样的评论:

代码语言:javascript
复制
get_post = Thoughts.objects.get(pk=thought_num)
comments = get_post.comments.all()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32790350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档