Django外键用户没有post_set属性

时间:2014-12-02 13:55:23

标签: django post foreign-keys

我有这两个模型。

class UserProfile(models.Model):
    user = models.OneToOneField(User)

这应该是

def posts(self): 
        return self.user.poster.all()

INSTEAD OF

def posts(self):
        return self.user.post_set.all()

def __unicode__(self):
        return self.user.username



class Post(models.Model):
    author = models.ForeignKey(User, related_name='poster')

def __unicode__(self):
        return self.title

我试图在这个html页面上显示用户的所有帖子,其中user_list = UserProfile.objects.all()

    {% for user in user_list %}

        {{ user.user }}

        {{ user.posts }}

    {% endfor %}

但是,这个错误页面会说“UserProfile”对象没有属性“post_set”,或者“UserProfile”对象没有属性“post_set”,这取决于我是否使用user.user.posts或者user.posts。

有人有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

在您的示例中,User没有post_set属性。如果您想获得相关用户的所有帖子,请尝试:

self.user.post.all()

答案 1 :(得分:1)

在Post类中,您已将ForeignKey的相关名称定义为poster。这意味着您可以通过user.poster.all()访问所有用户的帖子。

因此,您的UserProfile类的posts方法应如下所示:

def posts(self):
    return self.user.poster.all()