Я работаю над своим первым приложением Django. Короче говоря, для этого нужно отобразить список названий фильмов и позволить пользователям давать оценку (из 10) каждому фильму. Я смог использовать синтаксис {{form}} и {{formset}} в шаблоне для создания формы, которая позволяет оценивать один фильм за раз, что соответствует одной строке в таблице MySQL, но как это сделать? Я создаю форму, которая перебирает все названия фильмов в базе данных и создает форму, которая позволяет оценивать многие из них одновременно?
Сначала я думал, что это то, для чего были созданы наборы форм, но я не вижу способа автоматически перебирать содержимое таблицы базы данных, чтобы создавать элементы для перехода в форму, если вы понимаете, о чем я.
В настоящее время мой views.py имеет этот код:
def survey(request):
ScoreFormSet = formset_factory(ScoreForm)
if request.method == 'POST':
formset = ScoreFormSet(request.POST, request.FILES)
if formset.is_valid():
return HttpResponseRedirect('/')
else:
formset = ScoreFormSet()
return render_to_response('cf/survey.html', {
'formset':formset,
})
И мой survey.html имеет это:
<form action="/survey/" method="POST">
<table>
{{ formset }}
</table>
<input type = "submit" value = "Submit">
</form>
Да, и определение ScoreForm и Score из models.py:
class Score(models.Model):
movie = models.ForeignKey(Movie)
score = models.IntegerField()
user = models.ForeignKey(User)
class ScoreForm(ModelForm):
class Meta:
model = Score
Итак, в случае, если вышеприведенное неясно, я собираюсь создать форму, в которой есть по одной строке на фильм, и в каждой строке отображается заголовок, а также есть поле, позволяющее пользователю ввести свой счет.
Если кто-нибудь может указать мне правильный подход к этому, я был бы очень признателен.