无法访问ForeignKey元素

时间:2015-06-29 22:31:44

标签: python django

我目前在我的Django应用程序中设置了两个具有ForeignKey关系的模型。

class Post(models.Model):
    title = models.CharField(max_length=100)
    body = RichTextField(config_name='awesome_ckeditor')
    pub_date = models.DateTimeField('date', null=True)
    description = models.CharField(max_length=100, blank=True, null=True)
    photo = models.ImageField(upload_to='media/', blank=True, null=True)

    def __unicode__(self):
        return self.title


class Comment(models.Model):
    post = models.ForeignKey(Post, related_name="comments", blank=True, null=True)
    name = models.CharField(max_length=100, null=True)
    comment = models.TextField(blank=True)
    pub_date = models.DateField("date", blank=True, null=True)

    def __unicode__(self):
        return unicode(self.name)

我没有得到的是在两者之间进行查询。我试过通过shell进行查询但没有成功。如果我设置Post(title="Cat")然后设置c = Comment(name="Dog"),我可以通过类似titlename之类的内容查询各个模型p = Post.object.get(pk=1)p.title Cat。但如果我p.commentp.comment_id,则会出错。与任何Comment对象一样。但是当我print c.post时,我得到None。为了让p.<field_here>" = Dog`,我缺少什么?

1 个答案:

答案 0 :(得分:0)

由于您有相关名称“comments”,因此应该以这种方式调用从Post设置外部模型的访问权限:

p.comments

但是,由于您可以为同一个帖子提供许多评论,因此这不会返回唯一值,而是您需要查询的相关管理器。所以你可以得到:

p.comments.filter(name="Dog")