0
私はこのクエリのdjangoバージョンを思いつきましたが、私はそれを得ることができません。複数の結合を使ったDjango ORMクエリ
SELECT
*
FROM answer a
LEFT JOIN groups g
ON a.group_id = g.id
LEFT JOIN group_permissions gp
ON g.id = gp.group_id
WHERE gp.user_id = '77777';
私はこのような何かをしようとしてきた:
answers = Answer.objects.filter(user_id=user_id).prefetch_related('group__grouppermissions')
回答は、グループに関連付けられています。グループは複数のユーザーに関連付けられています。グループのアクセス許可は、グループとユーザーに関連付けられています。
私はどこかの関係を失っていると確信しています。
モデル:
class User(models.Model):
id = models.BigAutoField(primary_key=True)
username = models.CharField(max_length=255)
class Answer(models.Model):
id = models.BigAutoField(primary_key=True)
user = models.ForeignKey('User', models.DO_NOTHING)
group = models.ForeignKey('Groups', models.DO_NOTHING)
class Meta:
managed = False
db_table = 'answer'
class Groups(models.Model):
id = models.BigAutoField(primary_key=True)
name = models.CharField(unique=True, max_length=255)
class Meta:
managed = False
db_table = 'groups'
class GroupPermissions(models.Model):
id = models.BigAutoField(primary_key=True)
group = models.ForeignKey('Groups', models.DO_NOTHING)
user = models.ForeignKey('User', models.DO_NOTHING)
role = models.IntegerField()
class Meta:
managed = False
db_table = 'group_permissions'
回答はグループに関連付けられていません。モデルはどのように定義されていますか? – karthikr
回答はグループに関連付けられています。 Answerは、group:id(pk)にマップするグループid(外部キー)を持っています。 – dimxasnewfrozen