我有點失落。自從我做一些 Django 以來已經有一段時間了,我幾乎忘記了關于查詢集和模板的一切。該應用程式是一個比較不同供應商的問卷——因此是他們的產品。這是一個問卷,對每個產品都有一個評分(最佳匹配)。
我想訪問 for 回圈中的特定元素,該元素有兩個指向其他類的外鍵。這是我的模型:
模型:
class Question(models.Model):
questionText = models.CharField(max_length=500)
class Vendor(models.Model):
vendorName = models.CharField(max_length=30, unique=True)
class Scoring(models.Model):
score = models.IntegerField(default='0', blank=True)
questionScoreForKey = models.ForeignKey(Question, null=True, related_name='scorequestion', on_delete=models.SET_NULL)
vendorForKey = models.ForeignKey(Vendor, null=True, related_name='scorevendor', on_delete=models.SET_NULL)
視圖.py
def index(request):
questions = Question.objects.all()
vendors = Vendor.objects.all()
return render(request, 'compare/index.html', {'questions': questions, 'vendors': vendors})
模板
{% for ask in questions %}
<tr>
<td>{{ ask.questionText }} </td>
{% for vend in vendors %}
<td id="Vendor_{{ ask.pk }}_{{ vend.pk }}" style> {{ HERE THE SCORE OF THE QUESTION AND VENDOR }} </td>
{% endfor %}
</tr>
{% endfor %}
兩個鍵都存在,但我不知道如何訪問例如第一個供應商的第一個問題的分數。任何提示表示贊賞。
uj5u.com熱心網友回復:
您需要反向查詢分數。由于您已在模型中定義了相關名稱,因此您可以使用它們。
請注意,反向查詢為您提供了一個管理器物件。該all方法回傳一個查詢集,其中包含與反向查詢匹配的所有物件(您定義了一對多關系,一個問題/供應商可以有多個分數)。然后進一步過濾查詢集以獲得您需要的實體(例如first)。
{{vendor.scorevendor.all.first.score}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/370662.html
