假设我有一个像这样的Django模型:
class Person(models.Model):
name = models.CharField(max_length=64, blank=True, null=True)
age = models.IntField(blank=True, null=True)
class Friendship(models.Model):
person1 = models.ForeignKey('Person', related_name="person1")
person2 = models.ForeignKey('Person', related_name="person2”)
对于我的男朋友,我怎样才能有效地找到所有与我的男朋友没有友谊的人?你知道吗
我可以这样做,但必须有一种更友好、更高效的方法:
friends = []
for friendship in Friendships.objects.filter(Q(person1=my_guy) | Q(person2=my_guy)):
if friendship.person1 == my_guy:
friends.append(friendship.person2)
else:
friends.append(friendship.person1)
non_friends = []
for p in Persons.objects.all():
if p not in friends:
non_friends.append(p)
print non_friends
如果需要的话,我愿意改变这个模型,不过如果有一个有效的方法来使用现有的模型,我会喜欢的。你知道吗
我想出来了。最简单的方法是用多对多关系重新构建模型:
就这么简单:
相关问题 更多 >
编程相关推荐