【发布时间】:2015-11-03 16:03:53
【问题描述】:
我有两张表,其模型如下所示
class User(models.Model):
request = models.ForeignKey(Request)
first_name = models.CharField(max_length = 128)
middle_name = models.CharField(max_length = 128, null = True, blank = True)
last_name = models.CharField(max_length = 128)
email = models.EmailField(max_length = 256, null = True)
phone = models.CharField(max_length = 32, null = True)
class Meta:
db_table = "users"
class Sponsor(models.Model):
request = models.ForeignKey(Request)
sponsor_name = models.CharField(max_length = 128)
sponsor_email = models.CharField(max_length = 128, null = True, blank = True)
class Meta:
db_table = "sponsor"
我如何完成这个sql的等价物?
select users.first_name, users.last_name, sponsor.sponsor_name from users,sponsor where users.request_id = sponsor.request_id;
是否可以在单个 django 查询中完成,或者我必须先获得所有赞助商,然后再获得相关用户?我意识到我可能可以在 Request 对象本身上使用 select_related 来完成此操作,但如果可能的话,我想避免这种情况。
【问题讨论】:
-
你有指定的请求对象来过滤吗?
-
不,我只想要所有具有相关用户的赞助商。
-
我认为这在单个查询中是不可能的,因为
User与Sponsor无关。你可以创建一个custom Manager -
User 和 Sponsor 通过请求外键关联。我可以通过sql做到这一点,只是不知道如何用Django做到。
-
我猜你想要一个组对吧?
标签: django python-2.7 join