Django - 将初始值添加到formset

时间:2011-07-17 17:58:59

标签: django django-forms

我在两个班级(课程和学生)之间有多对多的关系,并有一个中介班(评估)。

我正在尝试设置一个表单,以便我可以向学生和相关评估数据添加课程。我可以获得我想要正确显示的所有字段,但是我还需要在幕后设置一个初始值(当前用户),因为将它放在表单中是没有意义的。

我尝试过关注文档,但我认为我将数据传递给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},

任何建议表示赞赏

由于

1 个答案:

答案 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("/")