如何使用加入Django ORM

时间:2015-11-24 08:13:05

标签: django django-models

嗨我有三个型号,

class Subscriber(models.Model):
    subscriberId = models.SmallIntegerField(null= True,unique=True)

    def __unicode__(self):
        return str(self.subscriberId)

class Text(models.Model):
    subscriberId = models.ForeignKey(Subscriber, null=False)
    content = models.CharField(max_length=162 ,blank= True)
    def __unicode__(self):
        return str(self.subscriberId)

class Text2(models.Model):
    subscriberId = models.ForeignKey(Subscriber, null=False)
    Du = models.IntegerField()
    def __unicode__(self):
        return str(self.subscriberId))

我必须从特定订阅者的Text和Text2获取数据。 在mysql中我正在使用

select * from Server_Text JOIN (Server_Text2) ON (Server_Text.subscriberId_id = 11 and Server_Text2.subscriberId_id = 11) ;

其中Server是我的数据库名称,它工作正常。

我如何在Django中使用它。

1 个答案:

答案 0 :(得分:0)

Django-ish这样做的方法是prefetch_related()。但是,这不是一个SQL查询:

subscriber = Subscriber.objects.prefetch_related('text_set', 'text2_set').get(pk=1)
print subscriver.text_set    # list of Text models
print subscriver.text2_set   # list of Text2 models