我有4个模型,我想检索它们之间的连接
MODELA
- class ModelA(models.Model):
- product = models.ForeignKey(ModelB)
- group = models.ForeignKey(Group)
ModelB
- class ModelB(models.Model):
- title = models.CharField()
ModelC
- class ModelC(models.Model):
- product = models.ForeignKey(ModelB)
- group = models.ForeignKey(ModelD)
ModelD
- class ModelD(models.Model):
- name = models.CharField()
现在我希望我的所有ModelA对象都与ModelB,ModelC和ModelD连接在一起
在sql中,这很容易做到.只需在表之间建立联接.
随着Django ORM我被卡住,因为我只能做前进的关系.
我这样做
- ModelA.objects.all().select_related(product)
但我无法加入ModelC
我已经阅读了this article,但我不想在我的大清单上循环,做一件简单的事情!我想只打一次数据库.
我正在使用Django的最后一个版本,我希望已经有一个解决方案,我不知道.
谢谢.
解决方法
请参阅
prefetch_related上的文档.目前它只是开发人员,但会使用Django 1.4.如果你可以等,或者你可以在行李箱上运行.你将能够使用它.
在此期间,您可以尝试django-batch-select.它基本上用于相同的目的.