2014-02-14 14 views
0

我做了一個微博,像twitter,我想列出經過身份驗證的用戶正在關注的用戶的帖子。如何在Django中列出關係manytomany的對象?例如:用戶,並遵循

型號:

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

我不確定我的答案,但沒有人回答,所以這是我的嘗試。

following是QueyrySet,這成爲UserProfile列表,但你user__in,這是User列表進行過濾。您可以嘗試將follows的ManyToManyField改爲User,並告訴我們結果?即使你仍然有同樣的問題,過濾器會更有意義!

相關問題