【发布时间】:2013-03-28 08:44:30
【问题描述】:
我有一个模型用户配置文件,它与另一个名为技能的表存在多对多关系 我还有一个模型组,它与另一个名为技能的表存在多对多关系
我想进行一个查询,计算用户个人资料与每个组共有的技能数量。
我还想进行查询,以计算特定用户个人资料与其他用户个人资料共同拥有的技能数量
有人可以帮我做这件事吗? 谢谢
模型:
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')
但我不知道如何在用户之间进行操作
【问题讨论】:
-
请分享模型。
标签: python sql django django-queryset