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)