2016-06-10 87 views
0

我有以下型號,的Django如何使用在許多欠查詢選擇一對多的關係

class TblMaterials(models.Model): 
name = ... 
.... 

class TblCategoris(models.Model): 
name = ... 
.... 

class TblMaterialCategories(models.Model): 
    tbl_categories = models.ForeignKey(TblCategories, blank=True, null=True) 
    tbl_materials = models.ForeignKey('TblMaterials', blank=True, null=True) 

並在我的主頁我想打印的所有材料和內相關材料類別。顯然,可能有一些材料沒有任何類別。

在我看來

我嘗試類似:

TblMaterials.objects.all().select_related('tblmaterialcategories_set') 

和模板:

{%for mat in materials%} 
    {{mat.name }} 

    {%for cat in mat.tblmaterialcategories_set.all %} 
     {{cat.tbl_categories.name}} , 
    {%endfor%} 

{%endfor%} 

我不認爲在_set項目select_related作品。 我想實現這樣的事情,而不會對每個項目進行查詢。如果我可以將其他字段添加到材質查詢集並像mat.categories一樣訪問它併爲其循環,那麼它也是appriciated。

什麼是顯示所有材料及其類別的最佳方式?

謝謝。

+0

您應該使用'prefetch_related',而不是'select_related'。 –

回答

0

Select related可以用於當前模型中的外鍵。舉一個例子:

類TblMaterials(models.Model): 名稱= ... .... 外鍵:TblMaterialCategories

雖然調用TblMaterial模型中,如果你想使用選擇具有相關tblMaterialCategories

TblMaterials.objects.all()。select_related( 'tblmaterialcategories')

它將工作。

相關問題