Django: Доступ к полю модели с двумя ключами в шаблоне

Я немного запутался. Я давно не занимался 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 %}

Оба ключа существуют, но я не знаю, как получить доступ к оценке, например, первого вопроса для первых поставщиков. Любая подсказка будет принята с благодарностью.

Вам необходимо выполнить обратный запрос к оценкам. Поскольку вы определили связанные имена в своих моделях, вы можете использовать их.

Обратите внимание, что обратный запрос дает вам объект manager. Метод all возвращает кверисет со всеми объектами, соответствующими обратному запросу (вы определили отношение "один-ко-многим", один вопрос/продавец может иметь много оценок). Затем отфильтруйте кверисет, чтобы получить нужный вам экземпляр (например, first).

{{vendor.scorevendor.all.first}}
{{ask.scorequestion.all.first}}
Вернуться на верх