我可以使用Prefetch_related来预取多个模型吗?

时间:2016-07-15 13:38:16

标签: python django

在我看来,我是一个预取相关数据,以便稍后从模板中读取

soproduct = SOproduct.objects.select_related('product__material').prefetch_related(
        Prefetch(
            'product__material__bomversion_set',
            queryset=BOMVersion.objects.default().active(),
            to_attr='default_active_bomversions'
        )
    )

我以前从未使用过prefetch,而是从stackoverflow上的一个答案中获取。

但是可以预取多个表吗?

我有另一个表格内容,我也希望在同一个模板中显示所以在soproduct和BOM的每个组合附近我想显示来自Production_order的相关值

    @with_author  
class Production_order(models.Model):
    version = IntegerVersionField( )
    creation_time = models.DateTimeField(auto_now_add=True, blank=True)
    BOM = models.ForeignKey(BOM, on_delete=models.PROTECT)
    soproduct = models.ForeignKey(SOproduct, on_delete=models.PROTECT)
    agent = models.ForeignKey(User, on_delete=models.PROTECT)
    quantity_order = models.DecimalField(max_digits=19, decimal_places=3)
    is_active = models.BooleanField(default=True)
    is_production= models.BooleanField(default=False)
    is_prepared = models.BooleanField(default=False)
    is_picked = models.BooleanField(default=False)
    production_notes = models.TextField(null=True, blank=True)
    inventory_notes = models.TextField(null=True, blank=True)

1 个答案:

答案 0 :(得分:1)

是的,只需在条目之间添加注释即可。

之前我从未使用过Prefetch对象,只需使用prefetch_related,如下所示:

soproduct = SOproduct.objects.select_related('product__material').prefetch_related(
                 'product__material__bomversion_set',
                 'second_table',
                 'third_table__fourth_table'
                  )