У меня есть пользователи, видео, темы, критерии и рейтинги.
- У видео есть тема
- В теме есть критерии.
- Пользователь может создать видео для данной темы
- Пользователь может оценивать видео по каждому критерию, указанному для соответствующей темы.
Вы можете увидеть мое оригинальное сообщение Django - Модель модели оценки модели DetailView, чтобы получить подробную информацию о используемой модели
Я расширил шаблон DetailView
на основе видеомодели, чтобы поместить список рейтингов для выбранного видео для данного пользователя в качестве дополнительного контекста.
class VideoFileDetailView(DetailView):
model = VideoFile
def get_context_data(self, **kwargs):
context = super(VideoFileDetailView, self).get_context_data(**kwargs)
context['rates'] = VideoRate.objects.filter(video=self.object, user=self.request.user)
return context
В шаблоне, отмеченном DetailView
, я хотел бы перечислить критерии видео, и для каждого критерия отобразится текущее рейтинговое значение.
<div id="rating">
<ul>
{% for crit in videofile.topic.crits.all %}
<li>
{% for rate in rates %}
{% if rate.crit.id == crit.id %}
{{ rate.rate }}
{% endif %}
{% endfor %}
<div class="rateit"
data-rateit-value="{# The rating value #}"
data-rateit-ispreset="true"
crit-id="{{ crit.id }}"></div>
{{ crit }}
</li>
{% endfor %}
</ul>
</div>
(rateit - это плагин jquery, который я использую для рисования элементов управления рейтингами звезд)
На самом деле, я получаю свои рейтинговые значения здесь в течение 2-го for
, но я уверен, что есть лучший способ сделать это. На самом деле, я все еще не уверен в правильности model.
Наконец, я хотел бы заменить {# The rating value #}
на значение рейтинга из ставки для текущего крита (в цикле). Как я могу это сделать?