我有一个模型用户配置文件,作为与另一个名为技能的表的多对多关系我还有一个模型组,它与另一个名为技能的表的多对多关系
我想做一个查询,计算用户配置文件与每个组共有的技能数量。
我还想进行查询,以计算特定用户配置文件与其他用户配置文件共同拥有的技能数量
有人可以帮我做到这一点。谢谢
型号:
class UserProfile(models.Model):
slug = models.SlugField(max_length=200)
user = models.ForeignKey(User, unique =True)
skills = models.ManyToManyField(Skills,null=True, blank=True)
courses = models.ManyToManyField(Course,null=True, blank=True)
class Group(models.Model):
slug = models.SlugField(max_length=200)
name = models.CharField(max_length=200)
skills = models.ManyToManyField(Skills,null=True, blank=True)
class Skills(models.Model):
slug = models.SlugField(max_length=200)
name = models.CharField(max_length=200)
所以我找到了一种方法来为团体做这件事
groupRecommendation = Group.objects.extra(
select={
'skills_count': """
SELECT COUNT(*) FROM axiom_alto_userprofile_skills
JOIN axiom_alto_group_skills on axiom_alto_userprofile_skills.skills_id = axiom_alto_group_skills.skills_id
WHERE axiom_alto_group_skills.group_id= axiom_alto_group.id AND axiom_alto_userprofile_skills.userprofile_id = %d """ % profile.id,
},
).order_by('-skills_count')
但我不知道如何在用户之间做到这一点