我有2个模型,userProfile和relationship。用户可以相互关注,并通过关系模型建立关系。这是代码:
class UserProfile(models.Model):
slug = models.SlugField(max_length=200)
user = models.ForeignKey(User, unique =True)
relationships = models.ManyToManyField('self', through='Relationship',symmetrical=False,null=True, blank=True,related_name='related_to')
class Relationship(models.Model):
from_person = models.ForeignKey(UserProfile, related_name='from_people')
to_person = models.ForeignKey(UserProfile, related_name='to_people')
status = models.IntegerField(choices=RELATIONSHIP_STATUSES)
我正在尝试获取userProfile列表,不包括userProfile列表,后跟某个用户。 这是我的疑问:
topUsersRecommendation = UserProfile.objects.exclude(id=profile.id,relationships__to_people__from_person = profile).extra(
select={
'num_group': """
SELECT COUNT(*) FROM axiom_alto_groupuser gu1
JOIN axiom_alto_groupuser gu2 on gu1.group_id = gu2.group_id
WHERE gu2.user_id=axiom_alto_userprofile.id
AND gu1.user_id = %d """ % profile.id,
},
).order_by('-num_group')
但排除似乎不起作用。 谢谢你的帮助^^
答案 0 :(得分:0)
您可以将字段添加到UserProfile
,如下所示:
followers = models.ManyToManyField(
'self',
blank=True,
symmetrical=False,
through='Relationship',
related_name='followees'
)
IIRC你可以做这样的事情:
certain_user = UserProfile.objects.get(slug='Bob')
all_but_certain_user_followees = UserProfile.objects.all().exclude(
follower = certain_user
)