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