从没有外键关系django的多个表中获取记录

时间:2014-03-21 07:45:42

标签: django join orm

我有两个django模特

class Users(models.Model):
    id=models.ForeignKey(VirtualMachines, null=True)
    email=models.EmailField(null=True)

class UsersDomains(models.Model):
    domain_email = models.EmailField(null=True)
    domain=models.CharField(null=True)

我想使用内连接从这些表中选择记录。模型之间没有关联,所以我不能使用select_related。我的SQL查询是:

SELECT u.*, du.* FROM
users u 
JOIN user_domain du 
ON du.domain_email = u.email 

不使用select_related如何将django ORM查询写入与我的sql查询相同的记录。

谢谢!

2 个答案:

答案 0 :(得分:3)

我不知道你为什么说这两个模特之间没有关系。你:它只使用char字段而不是ID。这仍然是一个完全有效的外键。您应该声明您的UserDomain:

class UsersDomains(models.Model):
    domain_email = models.ForeignKey(Users, to_field='email', null=True)

并将unique=True添加到Users.domain字段,现在Django将自动执行正确的操作。

答案 1 :(得分:0)

也许这可能会有所帮助 -

http://www.caktusgroup.com/blog/2009/09/28/custom-joins-with-djangos-queryjoin/

基本上它只是使用queryset.query.join添加你想要的任何连接..

相关问题