Добавление опроса множественного выбора в предложение и запись результата в CSV-файл (Django/Python)
Я хотел бы отобразить вопрос и дать пользователю оценку 1-5 в качестве опроса. Пять радио кнопок. У меня возник вопрос, но я не уверен, как создать 5 вариантов для пользователя.
Цель состоит в том, чтобы экспортировать вопрос и оценку в CSV-файл каждый раз, когда пользователь голосует за него, нажимая кнопку отправки (после выбора варианта). Необходимо записать вопрос и выбранный рейтинг (1, 2, 3, 4 или 5) в файл. Мне нужна помощь, чтобы начать в этом.
2 ответа
Решение
from django import forms
from django.forms import ModelForm
from django.db import models
class Poll(models.Model):
RATING_CHOICES = [(i,i) for i in range(1,6)]
question = models.TextField()
rating = models.PositiveSmallIntegerField(choices=RATING_CHOICES)
class PollForm(ModelForm):
class Meta:
model = Poll
fields = ('question', 'rating')
widgets = {'rating': forms.RadioSelect}
По вашему мнению, у вас будет что-то вроде:
import csv
from django.http import render_to_response, HttpResponseRedirect
from myproject.forms import PollForm
def myview(request):
context = {}
if request.method == 'POST'
form = PollForm(request.POST)
if form.is_valid():
obj = form.save()
with open('foo.csv', 'ab') as f: # Shamelessly stolen from Yuji
writer = csv.writer(f)
writer.writerow([obj.question, obj.rating])
return HttpResponseRedirect('somesuccesspage')
# More boring code here to handle the GET requests and stuff..
context['form'] = form
return render_to_response('somepath/mytempplate.html', context)
Не запускайте приведенный выше код, но, безусловно, это то, с чего можно начать.
Вот общая идея записи в файл. Замените "A", "B", "C" вашими данными.
Возможно, это происходит из формы, request.POST['selected_choice'] и т. Д.
import csv
with open('foo.csv', 'ab') as f:
writer = csv.writer(f)
writer.writerow(['A', 'B', 'C'])