일종의.Django - 데이터가 유효하지 않더라도 ModelForm이 저장됩니다.
나는 modelform은과 같이 정의 :
class EditUserForm(UserForm):
def __init__(self,data=None,instance=None):
UserForm.__init__(self,data=data,instance=instance)
del self.fields['username']
내가 내 EditUserForm에 표시에서 사용자 이름 필드를 제외하고 싶었 기 때문에 이런 짓을하지만 난 정의 폼에 사용자 이름 필드, 장고 방지의 버그를 덮어 때문에 이 일을하는 것이므로이 방법으로 양식을 썼습니다.
내보기 코드는 다음과 같습니다
if request.method == 'POST':
uf = EditUserForm(request.POST,instance=user)
upf = StudentProfileForm(request.POST,instance=profile)
if uf.is_valid() and upf.is_valid():
print 'VALID'
uf.save()
upf.save()
messages.success(request, 'You have successfully updated your profile.')
return HttpResponseRedirect('/student/editprofile')
else:
print 'INVALID'
을 테스트하려면, 나는 FIRSTNAME을 변경하고 암호가 일치하지 만들고 내가 제출 한 때 나는 INVALID가 (제대로 나타난 암호 유효성 검사 오류를 인쇄 한 것으로 나타났습니다 시도)하지만 "환영합니다 (사용자 이름) (사용자 성)"페이지의 맨 위에 "나는 첫 번째 이름이 변경된 것으로 나타났습니다. 다른 페이지로 이동하면 올바른 값으로 돌아갑니다. 어떻게 이런 일이 일어나지 않게합니까?
이 내 html 코드입니다 : 무슨 일이 일어나고 있는지에 관해서는
{% if user.is_authenticated %}
Welcome, <a href = "/{{user.get_profile.getType}}/profile">{{user.first_name}} {{user.last_name}}</a> |
<a href = "/auth/logout">Logout</a>
{% else %}
{% endif %}
내 생각 엔 내가 데이터를 게시 할 때, 그것의 실제 user.first_name을 덮어 맥락에서 user.first_name을두고있다. 데이터가 아직 저장되지 않기 때문에하지만 ... 유효하지 그래서
, 어떻게 그것이 실제로 유효한 때까지 값의 변화없이 게시되고있어 템플릿에 user.first_name 수 있습니다 ??
해당보기의 나머지 코드를 표시하십시오. –