django更新表单没有属性保存

时间:2017-02-15 09:17:09

标签: django forms

我正在尝试创建一个允许用户更新其名称的表单,我使用的是form.form而不是ModelForm,因为它可以让您更好地控制表单的样式,因为您可以使用小部件。当我去保存表单时,它说updateNameForm没有属性保存

查看

def UpdateName(request,user_id):


if request.method == "POST":

   form = UpdateNameForm(request.POST,initial=initial)
   if form.is_valid():
     name = form.cleaned_data['name']
     form.save()
else:
    form = UpdateNameForm(initial=initial)

forms.py

class UpdateNameForm(forms.Form):
        name = forms.CharField(
        required=True,
        label="*Status",
        widget=forms.widgets.Select(attrs={'class' : 'span6 small-margin-top small-margin-bottom'})
    )

2 个答案:

答案 0 :(得分:3)

标准表单类确实没有save属性 - 它对要保存的任何模型一无所知。您需要使用ModelForm。

另请注意,您需要将instance参数传递给表单,以使其更新现有实例,而不是创建新实例。你可能根本不需要initial

答案 1 :(得分:0)

def UpdateName(request,user_id):
user = get_user(user_id)

if request.method == "POST":

   form = UpdateNameForm(request.POST,initial=initial)
   if form.is_valid():
     name = form.cleaned_data['name']
     user.name = name
     user.save()
else:
    form = UpdateNameForm(initial=initial)