0
我的ModelForm的定義是這樣的,當不要求:當我創建一個新用戶Django的創建密碼時,需要用戶,編輯
class UserForm(ModelForm):
password = forms.CharField(required=True, label="Password", widget=forms.PasswordInput)
所以需要密碼。不過,我想在編輯用戶時不要求它。我的編輯/添加按以下方式在views.py中處理:
@user_passes_test(lambda u: u.is_superuser)
def add(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
new_user = User.objects.create_user(form.cleaned_data['username'], form.cleaned_data['email'], form.cleaned_data['password'])
new_user.save()
messages.success(request, "User '%s' created" % new_user.username)
return HttpResponseRedirect('/user')
else:
form = UserForm()
return render(request, 'user/add.html', {"form": form})
@user_passes_test(lambda u: u.is_superuser)
def edit(request, id):
user = User.objects.get(id=id)
if request.method == 'POST':
f = UserForm(request.POST, instance=user)
if f.is_valid():
f.save()
messages.success(request, "User '%s' altered" % user.username)
return HttpResponseRedirect('/user')
else:
form = UserForm(instance=user)
return render(request, 'user/edit.html', {"form": form, "user": user})
感謝您的回答。
米哈爾
謝謝,我剛剛開始使用Python/Django,並且這教會了我很多 –
謝謝你在我的答案中加入「in」。 – DavidM