QuerySet获取用户联系人的所有属性?

问题描述:

我有以下相关机型: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可以用来得到相同的?

为了让所有的位置给定的用户组,试试这个代码:

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