我有这两个模型。
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。
有人有什么想法吗?
由于
答案 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()