Как я могу заполнить мою форму django в двух разных шаблонах?

Это мой models.py:

class Person(models.Model):
Person_ID = models.AutoField(blank=False, primary_key=True)
p_SSN = models.CharField(blank=False, null=False, max_length=10)
p_fName = models.CharField(null=False, blank=False, max_length=15)
p_lName = models.CharField(null=False, blank=False, max_length=25)
p_phoneNum = models.CharField(null=False, blank=False, max_length=11)
p_birthDate = models.DateField(null=False, blank=False)
p_Email = models.EmailField(null=False, blank=False, unique=True)
p_Password = models.CharField(null=False, blank=False, max_length=20)

На шаге 1 я хочу заполнить свою форму за исключением p_Email и p_Password.

На шаге 2 (имеется в виду следующий шаблон) я хочу инициализировать p_Email и p_Password.

вот моя форма django:

class PersonForm(forms.ModelForm):
p_fName = forms.CharField(max_length=15)
p_lName = forms.CharField(max_length=25)
p_SSN = forms.CharField(max_length=10)
p_phoneNum = forms.CharField(max_length=11)
p_birthDate = forms.DateField()
p_Email = forms.EmailField(max_length=255)
p_Password = forms.CharField(max_length=255)

class Meta:
    model = Person
    fields = ['p_fName', 'p_lName', 'p_SSN', 'p_phoneNum', 'p_birthDate', 'p_Email', 'p_Password']

Это мой views.py:

def new_student(request):
newStudentForm = PersonForm(request.POST or None)
if newStudentForm.is_valid():
    newStudentForm.save()
return render(request,
              'signUp_student.html',
              {'form': newStudentForm})

А мой шаблон для шага 1 таков:

<form action="{%  url 'new_student' %}" method="post">
    {% csrf_token %}
    <label for="firstName">First Name</label><br>
    {{ form.p_fName }}<br>
    <label for="lastName">Last Name</label><br>
    {{ form.p_lName }}<br>
    <label for="firstName">SSN Code</label><br>
    {{ form.p_SSN }}<br>
    <label for="birthdate">Birthdate</label><br>
    {{ form.p_birthDate }}<br>
    <label for="phoneNumber">Phone Number</label><br>
    {{ form.p_phoneNum }}<br><br>
    <button type="submit">Sign up</button>
</form>

Как я могу инициализировать поля класса в разных шаблонах?

Спасибо, что уделили время для решения моей проблемы.

Вы можете разделить свои модели на две формы. После разделения форм вы можете написать два представления для двух разных форм, которые будут обрабатываться и затем отправляться в два шаблона.

Файл forms.py выглядит следующим образом:

class PersonForm(forms.ModelForm):

    class Meta:
        model = Person
        fields = ['p_fName', 'p_lName', 'p_SSN', 'p_phoneNum', 'p_birthDate']

class PersonFormTwo(forms.ModelForm):
    class Meta:
        model=Person
        fields=['p_Email','p_Password']

теперь файл views.py:

def new_student(request):
    newStudentForm = forms.PersonForm(request.POST or None)
    newStudentFormTwo=forms.PersonFormTwo(request.POST)
    if newStudentForm.is_valid():
        newStudentForm.save()
    return render(request,
                  'signup_student.html',
                  {'form': newStudentForm})

def new_student_two(request):
    newStudentFormTwo=forms.PersonFormTwo(request.POST)
    if newStudentFormTwo.is_valid():
        newStudentFormTwo.save()
    return render(request,
                  'next.html',
                  {'form': newStudentFormTwo})

файлurls.py:

path('next/',views.new_student_two,name='next'),

следующий файл.html:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
{{form.as_p}}
<input type="submit" name="" value="save">
  </body>
</html>

Вот и все. Другой вариант - создать две разные модели, связать одну модель с другой с помощью поля foreignkey, а остальное - то же самое.

Вернуться на верх