【发布时间】:2020-05-13 10:13:08
【问题描述】:
我想知道如何使用 Django 将不受外键约束的表连接到外部连接。
from django.db import models
class Member(models.Model):
name = models.CharField(max_length=50)
class Meta:
db_table = 'member'
class GroupMember(models.Models):
group_id = models.IntegerField()
member = models.ForeignKey(Member, on_delete=models.CASCADE)
class Meta:
db_table = 'group_member'
class Profile(models.Model):
type = models.IntegerField()
member = models.ForeignKey(Member, on_delete=models.CASCADE)
profile = models.CharField(max_length=50)
class Meta:
db_table = 'profile'
在这样一个模型中,通过member_id将特定group_id的group_member和特定类型的profile对外组合后,写SQL语句的结果是
select * from group_member left outer join profile on group_member.member_id=profile.member_id and type=1 where group_id=1;
and type=1 where group_id=1;我们想得到我们得到的结果
res = GroupMember.objects.filter(member__groupmember__group_id=1).filter(member__profile__type=1)
通过会员加入,但是
SELECT "group_member"." id", "group_member"." "group_id", "group_member"." member_id" FROM "group_member" INNER JOIN "member" ON ("group_member"." member_id" = "member"." id") INNER JOIN "group_member" T3 ON ("member"." id" = T3. "member_id") INNER JOIN "profile" ON ("member"." id" = "profile"." member_id") WHERE (T3. "group_id" = 1 AND "profile"." type" = 1)
它没有用。
请告诉我如何解决这个问题。 非常感谢。
【问题讨论】:
标签: sql django django-models