我在两个班级(课程和学生)之间有多对多的关系,并有一个中介班(评估)。
我正在尝试设置一个表单,以便我可以向学生和相关评估数据添加课程。我可以获得我想要正确显示的所有字段,但是我还需要在幕后设置一个初始值(当前用户),因为将它放在表单中是没有意义的。
我尝试过关注文档,但我认为我将数据传递给formset的方式存在语法错误。
我收到的错误如下:
__init__() got an unexpected keyword argument 'initial'
我的实际观点(我尝试添加删除的初始数据)如下所示:
def addlesson(request):
LessonFormset = inlineformset_factory(Lesson, Evaluation, exclude=('user',), max_num=5)
if request.method == 'POST':
lesson = Lesson(user=request.user)
form = LessonForm(request.POST, instance=lesson, user = request.user)
formset = LessonFormset(request.POST, instance = lesson)
if form.is_valid() and formset.is_valid():
form.save()
formset.save()
return HttpResponseRedirect("/")
else:
form = LessonForm(user = request.user)
formset = LessonFormset()
return render_to_response("addlesson.html", {
'form': form,
'formset' : formset,
}, context_instance=RequestContext(request))
有人能告诉我使用正确的语法来设置formset中的当前用户吗? 这就是我之前所拥有的,但它在我的帖子开头给了我错误:
initial={'user': request.user},
任何建议表示赞赏
由于
答案 0 :(得分:3)
我不清楚为什么你在使用formset时看起来只想添加一行。如果只有一行,那么我会如何做常规表格。但是,这是我在formset中设置默认值的方法。
我排除了该字段,就像您已经在代码中一样。然后:
if form.is_valid() and formset.is_valid():
form.save()
models = formset.save(commit=False)
for i in models:
i.user = request.user
i.save()
return HttpResponseRedirect("/")