我一直在尝试提出这个查询的django版本,但我似乎无法理解。在
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';
我一直在尝试这样的事情:
^{pr2}$答案与组关联。组与多个用户关联。组权限与组和用户相关联。在
我肯定我错过了一些关系。在
型号:
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'
django为您创建了一个隐式关联:
group_grouppermissions_set
。你可以在docs中读到关于多对一关系的内容。在因此,您的查询将如下所示:
还要注意,django将创建
LEFT OUTER JOIN
。在{3}你可以很自信的添加查询。这取决于您想从
Answer
模型中获取的深度。在相关问题 更多 >
编程相关推荐