2016-07-15 16 views
0

私の見解ではIプリフェッチ関連データがテンプレートPrefetch_relatedを使用して複数のモデルをプリフェッチできますか?

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

から、後でそれを読むために、私は前に決してユーザーのプリフェッチを持っているとstackoverflowの上の回答のいずれかからそれを得ました。

しかし、複数のテーブルをプリフェッチすることは可能ですか?

私ははい、ちょうど間にコメントを追加し、私はまた私が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

から関連する値を表示したいsoproductとBOMの各組み合わせに近いので、同じテンプレートに表示したいの別のテーブルの内容を持っていますエントリ。

私は次のようにするだけprefetch_related使用し、前にプリフェッチオブジェクトを使用したことがない

soproduct = SOproduct.objects.select_related('product__material').prefetch_related(
       'product__material__bomversion_set', 
       'second_table', 
       'third_table__fourth_table' 
       ) 
関連する問題