Я использую систему аутентификации Django и иметь другую модель, которая о пользователе:как проверить проверку двух форм в форме django?
class user(models.Model):
user = models.OneToOneField(User)
user_code=models.IntegerField(max_length=3)
phone=models.IntegerField(max_length=10)
task=models.ForeignKey(task)
class Meta:
unique_together = ('user_code', 'task')
def __unicode__(self):
return str(self.user_code)
, так что я сделал две формы для пользователя Registeration (form.py):
class userForm(forms.ModelForm):
class Meta:
model=User
widgets = {'password': forms.PasswordInput(),}
class Form4(forms.ModelForm):
class Meta:
model=user
Сейчас, на мой взгляд Я хочу отправить две формы в шаблон и представить их оба. Все хорошо, но после отправки я не могу проверить проверку формы? это мое мнение:
def add_new_user(request):
if request.method == 'POST': # If the form has been submitted...
user_form = userForm(request.POST) # django User
form = Form4(request.POST) # my model user
if user_form.is_valid() and form.is_valid(): # All validation rules pass **edited** is_valide
user_name=user_form.cleaned_data['username']
password = user_form.cleaned_data['password']
name=user_form.cleaned_data['first_name']
user_id = form.cleaned_data['user_code']
email = user_form.cleaned_data['email']
phone = form.cleaned_data['phone']
task = form.cleaned_data['task']
else: # **added** form invalid statement
return render(request, 'student/form4.html', {'form': form,'user_form':user_form})
try: #**moved from valid statement**
do somthing...
except ValueError :
do somthing...
else:
form = Form4()
user_form=userForm()
# An unbound form
return render(request, 'student/form4.html', {'form': form,'user_form':user_form})
это мой шаблон (form4.html):
<form name="myForm" action="{% url 'student:add_new_user' %}" onsubmit="return validateForm4();" method="post">
{% csrf_token %}
<div id="form-data">
{{ form.non_field_errors }}
{{ user_form.username }}{{ user_form.username.errors }}
<label for="id_user_name">user name:</label><br>
{{ user_form.password }}{{ user_form.password.errors }}
<label for="id_password">password:</label><br>
{{ user_form.first_name }}{{ user_form.first_name.errors }}
<label for="id_name">first name:</label><br>
{{ user_form.email }}{{ user_form.email.errors }}
<label for="id_email">email:</label><br>
{{ form.user_code }}{{ form.user_code.errors }}
<label for="id_email">use ID:</label><br>
{{ form.phone }}{{ form.phone.errors }}
<label for="id_phone">phone number:</label><br>
{{ form.task }}{{ form.task.errors }}
<label for="id_task">task:</label><br>
<input type="submit" value="register" /><br>
</div>
</form>
Но она возвращает значение False как для подтверждения. Как проверить проверку?
ОТВЕТ:
добавить какое поле я хочу от пользователя и пользователя. и измените мой «form.py» на:
class userForm(forms.ModelForm):
class Meta:
model=User
fields = ('username', 'password','first_name','email')
widgets = {'password': forms.PasswordInput(),}
class Form4(forms.ModelForm):
class Meta:
model=user
fields = ('user_code', 'phone','task')
благодарит за все комментарии и ответы.
опечатка ошибку maybe- эта строка: 'если user_form.is_valide и form.is_valid()' '>> здесь user_form.is_valide' должен быть' user_form. is_valid() ' – ruddra
Боковой вопрос: можно ли назвать модель« пользователем »? – rnevius
ruddra: извините, я делаю эту ошибку, когда прошёл мимо нее здесь. – user3789719