2012-02-28 24 views
3

我有以下相關機型:QuerySet獲取用戶聯繫人的所有屬性?

class PositionTimestamp(models.Model): 
    timestamp = models.DateTimeField(auto_now_add=True) 
    position = models.ForeignKey('Position') 
    profile = models.ForeignKey('UserProfile') 

class Position(models.Model): 
    position = models.CharField(max_length=100) 
    ordering = models.IntegerField(max_length=3) 
    select_display = models.CharField(max_length=100) 

class UserProfile(models.Model): 
    def mutual_contacts(self): 
     # returns all of the current User's contacts. A QuerySet of UserProfile objects. 

我想獲得的所有position S代表給定用戶的mutual_contacts。這是我目前(效率低下)做的:

>>> p = UserProfile.objects.get(id=1) 
>>> position_set=[] 
>>> for profile in p.mutual_contacts(): 
     position_set.append(p.positiontimestamp_set.all()) 
>>> position_set 
    [[<PositionTimestamp: PositionTimestamp object>, <PositionTimestamp: 
    PositionTimestamp object>, <PositionTimestamp: PositionTimestamp object>]] 
>>> position_set = set([item.position for item in position_set[0]]) 

>>> position_set 
    set([<Position: Director>, <Position: Writer>, <Position: Editor>]) 

QuerySet可以用來得到相同的?

回答

0

爲了讓所有的位置給定的用戶組,試試這個代碼:

p = UserProfile.objects.get(id=1) 
contacts = p.mutual_contacts() 
positions = Position.objects.filter(positiontimestamp__profile__in=contacts) 
相關問題