私はスキルと呼ばれる別のテーブルとの多対多関係としてのモデルユーザープロファイルを持っていますスキルと呼ばれる別のテーブルとの多対多関係としてのモデルグループも持っています
ユーザープロファイルが各グループに共通するスキルの数をカウントするクエリを作成したいと思います。
また、特定のユーザー プロファイルが他のユーザー プロファイルと共通に持っているスキルの数をカウントするクエリを作成したいと思います
誰かがこれを行うのを手伝ってくれませんか。ありがとうございました
モデル:
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')
しかし、私はユーザー間でそれを行う方法がわかりません