我想了解使用relatedname_set.all
與relatedname.all
之間的區別。我有一個模板,我無法通過一個ForeignKey與relatedname_set.all
迭代對象。我只是碰巧把它改成relatedname.all
,它工作。見下文。我有一個ListView,它提供了指向模板的所有Cooker對象。在模板中使用object.relatedname_set.all和object.relatedname.all作爲ForeignKey
我的模型
class Cooker(models.Model):
name = models.CharField(max_length=20, name="name")
background = models.CharField(max_length=500, name="background")
class Formula(models.Model):
food = models.CharField(max_length=200, name="food")
maker = models.ForeignKey(Cooker, related_name="cooker2")
模板的作品:
<body>
{% for cook in cooker_list %}
<h2><li>{{ cook.name }}</li></h2>
<li>{% for recipe in cook.cooker2.all %}
{{ recipe.food }}
{% endfor %}</li>
{% endfor %}
</body>
不工作(4號線)模板行:
<li>{% for recipe in cook.cooker2_set.all %}
因爲您已經在關係上設置了related_name,所以您必須正確使用 –
cooker2_set'除非擁有'related_name ='cooker2_set'',否則不會工作。如果你不設置'related_name',它將默認爲'formula_set'。看看你的模型,我會推薦'related_name ='公式',因爲'cook.formulas.all()'給你相關的'Formula'實例,而不是'Cooker'實例。 – Alasdair
好的,謝謝,我會瀏覽我的ForeignKeys並選擇一些更好的名字。我最初遠離使用Model name作爲'related_name',因爲當我第一次啓動時,我不確定是否實際使用'related_name'或使用Model名稱。由於它們都是相同的,但現在我得到它。 – ratrace123