Я создаю трекер, где пользователи каждый день сохраняют свой ответ на один и тот же вопрос. Есть ли способ отслеживать отдельные ответы в виде списка через models.py?
Я не вижу поля модели для списков, поэтому я сохраняю список ответов через представления .py на данный момент.
mylist = []
global length
@login_required
def add(request):
respond = Response.objects.all()
if request.method == 'POST':
selected_option = (request.POST['rating'])
length = len(mylist)
if selected_option == 'option1':
mylist.append(1)
print(respond.score)
elif selected_option == 'option2':
mylist.append(2)
print(respond.score)
elif selected_option == 'option3':
mylist.append(3)
print(respond.score)
elif selected_option == 'option4':
mylist.append(4)
print(respond.score)
elif selected_option == 'option5':
mylist.append(5)
print(respond.score)
else:
return HttpResponse(400, 'Invalid form')
for votes in respond:
votes.save()
return redirect(add)
context = {
'respond' : respond,
'mylist' : mylist
}
return render(request, 'rating/add.html', context)
def graph(request):
x_data = list(range(0,len(mylist)))
y_data = list(mylist)
return render(request, "rating/home.html", context={'plot_div': plot_div, 'mylist' : mylist})
Это завершает мою потребность сохранять ответы в список, чтобы я мог отправлять их в сюжет. Проблема в том, что он не сохраняется как часть модели и поэтому не связан напрямую с каким-либо конкретным c пользователем (все результаты пользователей сгруппированы вместе).
Я использую это для своих models прямо сейчас, но не знаете, как связать и сохранить в нем результаты опроса:
class Response(models.Model):
responder = models.ForeignKey(User, on_delete=models.CASCADE)
score = models.IntegerField(default=0)
def __str__(self):
return self.score
Как мне настроить свою модель, чтобы иметь возможность сохранять список ответов (числовые значения), которые могут быть нанесен?