1
我正在尝试创建一个测验,其中包含用户在表单中输入的一系列问题(也包含标记,但这不是重点)。我试过以下,但我不认为这是正确的做法。我认为必须有另一种方式,而不是手动调用Quiz.objects.create()与我从表单中获取的数据。另外即使测验对象被创建,我发现了以下错误:根据用户输入添加表单字段数据
'NoneType' object has no attribute '__dict__'
models.py
class Quiz(models.Model):
name = models.CharField(max_length=100)
number_of_questions = models.IntegerField(default=5)
time_limit = models.IntegerField(default=300)
questions = models.ManyToManyField(Question)
forms.py
class QuizForm(forms.ModelForm):
class Meta:
model = Quiz
exclude = ['questions']
def save(self):
data = self.cleaned_data
questions = get_questions_with_tag('example_tag')
questions = questions[:data['number_of_questions']]
quiz = Quiz.objects.create(name=data['name'],
time_limit=data['time_limit'],
number_of_questions=data['number_of_questions'])
for q in questions:
quiz.questions.add(q)
quiz.save()
意见.py
class AddQuizView(CreateView):
template_name = 'quiz/cpanel/add_quiz.html'
form_class = QuizForm
success_url = reverse_lazy('list_quizzes')
你能否提出一种更好的方法,只涉及将问题列表添加到表单请求中?
问题来自哪里?什么是'get_questions_with_tag'? – 2014-10-08 14:20:47
这是一个Question类型的对象列表。我只是在那里查询数据库:'Question.objects.filter(tag__name = tag)' – 2014-10-08 15:37:40