2013-07-23 18 views
0
AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User') 

class Friend(models.Model): 
    """ Model to represent Friendships """ 
    to_user = models.ForeignKey(AUTH_USER_MODEL, related_name='friends') 
    from_user = models.ForeignKey(AUTH_USER_MODEL, related_name='_unused_friend_relation') 
    created = models.DateTimeField(default=timezone.now) 

    objects = FriendshipManager() 

    class Meta: 
     verbose_name = _('Friend') 
     verbose_name_plural = _('Friends') 
     unique_together = ('from_user', 'to_user') 

    def __unicode__(self): 
     return "User #%d is friends with #%d" % (self.to_user_id, self.from_user_id) 



class FriendshipManager(models.Manager): 

    def unread_requests(self, user): 
     """ Return a list of unread friendship requests """ 
     key = cache_key('unread_requests', user.pk) 
     unread_requests = cache.get(key) 

     if unread_requests is None: 
      qs = FriendshipRequest.objects.select_related(depth=1).filter(
       to_user=user, 
      viewed__isnull=True).all() 
      unread_requests = list(qs) 
      cache.set(key, unread_requests) 

     return unread_requests 

class Person(models.Model): 

    user = models.ForeignKey(User)) 
    name = models.CharField(max_length=30, blank=True) 
    image = models.ImageField(upload_to='photos', blank=True) 


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

我正在使用這種友情模式。該模型允許您在用戶之間創建好友。 我也有一個名爲Profile的UserProfile模型。Django從元組檢索用戶

下面的命令顯示瞭如何查看特定用戶

>>> user = User.objects.get(pk=1) 
>>> user1 = User.objects.get(pk=1) 
>>> user2 = User.objects.get(pk=2) 
>>> user3 = User.objects.get(pk=3) 
>>> Friend.objects.add_friend(user1,user3) 
<FriendshipRequest: User #1 friendship requested #3> 
>>> Friend.objects.add_friend(user2,user3) 
<FriendshipRequest: User #2 friendship requested #3> 
>>> requests = Friend.objects.unread_requests(user=user3) 
>>> requests 
[<FriendshipRequest: User #1 friendship requested #3>, <FriendshipRequest: User 
#2 friendship requested #3>] 
>>> requests[0].to_user 
<User: hello> 

我想顯示所有與圖片,但特定用戶

我可以的友誼請求中的所有好友請求此刻不做,因爲請求是以元組形式的(下面是一個例子)。

我希望能夠檢索所有誰請求友誼特定用戶

的用戶,然後使用這些用戶找回自己的用戶用戶配置模式指的是人,所以我可以顯示在模板中自己的形象

在它最簡單的形式

我怎樣才能檢索到所有誰請求友誼(下面的例子是,我可以查看一個

 >>> requests = Friend.objects.unread_requests(user=user3) 
    >>> requests 
    [<FriendshipRequest: User #1 friendship requested #3>, <FriendshipRequest: User 
    #2 friendship requested #3>] 
     >>> requests[0].to_user 
的用戶名用戶

,然後收集他們的用戶配置(人)

Person.objects.filter (?) 

回答

1

創建好友列表

list_of_friend_requests = [r.to_user for r in requests] 

使用django's filtering

persons = Person.objects.filter(user__in=list_of_friend_requests) 
+0

感謝你的幫助過濾器 – JackRoster