Django:在模板中使用两个键访问模型字段
Django: Access model field with two keys in template
我有点迷茫。自从我做了一些 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)
views.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 %}
两个键都存在,但我不知道如何访问 e 的分数。 G。第一个供应商的第一个问题。任何提示表示赞赏。
您需要反向查询分数。由于您已经在模型中定义了相关名称,因此您可以使用它们。
请注意,反向查询会为您提供一个管理器对象。 all
方法 returns 一个包含所有对象匹配反向查询的查询集(你定义了一对多关系,一个 question/vendor 可以有很多分数)。然后进一步过滤查询集以获取您需要的实例(例如first
)。
{{vendor.scorevendor.all.first.score}}
我有点迷茫。自从我做了一些 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)
views.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 %}
两个键都存在,但我不知道如何访问 e 的分数。 G。第一个供应商的第一个问题。任何提示表示赞赏。
您需要反向查询分数。由于您已经在模型中定义了相关名称,因此您可以使用它们。
请注意,反向查询会为您提供一个管理器对象。 all
方法 returns 一个包含所有对象匹配反向查询的查询集(你定义了一对多关系,一个 question/vendor 可以有很多分数)。然后进一步过滤查询集以获取您需要的实例(例如first
)。
{{vendor.scorevendor.all.first.score}}