我想显示一个问题并让用户从 1 到 5 对其进行投票作为投票。五个单选按钮。我生成了问题,但我不确定如何为用户创建 5 个选项。
目标是每次用户通过单击提交按钮(选择选项后)对其进行投票时,将问题和评级导出到 csv 文件。它需要将问题和选定的评分(1、2、3、4 或 5)写到文件中。我需要一些帮助才能开始。
这是写入文件的一般思路。用您的数据替换“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'])
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)
没有运行上面的代码,但它肯定是让你开始的东西。