我正在制作像twitter这样的微博,我想列出经过身份验证的用户所关注的用户帖子。
型号:
class Post(models.Model):
post = models.TextField(max_length=300)
created = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User)
def __unicode__(self):
return self.post
class UserProfile(models.Model):
USER_SEX = (
('M', 'Masculino'),
('F', 'Femenino'),
)
birthday = models.DateField(null=False)
sex = models.CharField(max_length=1, choices=USER_SEX)
description = models.TextField(max_length=100, null=True)
location = models.CharField(blank=True, max_length=100, null=True)
user = models.OneToOneField(User)
follows = models.ManyToManyField('UserProfile', related_name='followed_by', blank=True, symmetrical=False)
def __unicode__(self):
return self.user.get_username()
查看:
def show_posts(request):
user = request.user
following = user.userprofile.follows.all()
posts = Post.objects.filter(user__in=following).order_by('-created')
return render_to_response("posts.html", context_instance = RequestContext(request, {'posts':posts}))
此函数返回所有用户的所有帖子,但经过身份验证的用户除外。我不想要这个。 我想显示所有用户的帖子,只有经过身份验证的用户才会关注,以及用户身份验证的帖子。
有人可以帮助我吗?
答案 0 :(得分:0)
我不确定我的答案,但没有人回答,所以这是我的尝试。
following
是一个QuerySet,它会成为UserProfile
的列表,但您会对user__in
进行过滤,User
是follows
的列表。您可以尝试将User
一个ManyToManyField改为{{1}}并告诉我们结果吗?即使你仍然遇到同样的问题,过滤器也会更有意义!