所以我想在我創建的類中回圈顯示元素,但是我不知道如何呼叫 ManyToMany 元素,你能幫我嗎?
class Tag(models.Model):
nametag = models.CharField(max_length=200, null=True)
class OA(models.Model):
tags = models.ManyToManyField(Tag)
...
我的功能:
def home(request):
objetos = OA.objects.all()
return render(request, {'objetos': objetos})
問題:
{% for i in objetos %}
...
<tr>{{i.tags.nametag}}</tr>
{% endfor %}
在這種情況下,'nametag' 已經有一個值,所以它不是空的。我嘗試了一些東西,但不能做太多,我需要幫助。
uj5u.com熱心網友回復:
您需要列舉i.tags.all(). 實際上,由于這是 a ManyToManyField,因此 anOA可以有零個、一個或多個相關的Tags,而 aTag可以有零個、一個或多個OA物件。
因此,您可以使用;
<tr>{% for tag in i.tags.all %} {{ tag.nametag }}{% endfor %}</tr>
在視圖中,您可以預取相關的Tags 以避免對每個 OA物件進行額外的查詢:
def home(request):
objetos = OA.objects.prefetch_related('tags')
return render(request, {'objetos': objetos})
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323871.html
標籤:姜戈 django-models 多对多
下一篇:Django需要第一段
