Django RadioButton в HTML

В моей пользовательской форме есть radiobutton для выбора пола пользователя. Когда я пытаюсь отправить форму, она возвращает мне эту ошибку

'UserInfo' object has no attribute 'is_valid' 

Поскольку эта ошибка началась после того, как я отредактировал свой html-шаблон, используя только html, а не {{ form.as_p }}, я хотел узнать, может ли проблема быть в том, как я написал ввод radiobutton, поскольку я не уверен, что это правильный способ его использования. Спасибо всем за помощь!

model.py

class UserInfo(models.Model): 
    gender_choice = (('Male', 'Male'),('Female', 'Female'))  
   
    user = models.OneToOneField(User, blank=True,  null=True, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=120)
    last_name = models.CharField(max_length=120)
    gender = models.CharField(max_length=120, choices=gender_choice)

forms.py

class UserInfo(ModelForm):
    class Meta:
        model = UserInfo
        fields = ('first_name', 'last_name', 'gender')

views.py

def add_information(request):
    submitted = False
    if request.method == "POST":
        form = UserInfo(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('add_information?submitted=True')
    else:
        form = UserInfo
        if 'submitted' in request.GET:
            submitted = True
    return render(request, 'accounts/profile/tempplate.html', {'form': form, 'submitted':submitted})

template.html

    <form action="" method=POST> 
        {% csrf_token %}

    <label>First Name:</label>  
    <div class="input-group mb-2">
        <div class="input-group-append">
        </div>
            <input type="text" name="first_name" placeholder="">
        </div>          

    <label>Last Name:</label>
    <div class="input-group mb-2">  
        <div class="input-group-append">
            </div>
            <input type="text" name="last_name" placeholder="">
        </div>

    <label>Gender:</label>
    <div class="input-group mb-2">
        <div class="input-group-append">
            </div>        
            <input type="radio" id="male" name="gender" value="male">
            <label for="male">Male</label>
            <input type="radio" id="female" name="gender" value="female">
            <label for="female">Female</label>
        </div>

Спасибо всем!

в ваших моделях

class UserInfo(models.Model): 
    gender_choice = [
                     ('Male', 'Male'),
                     ('Female', 'Female')
                     ]  

    user = models.OneToOneField(User, blank=True,  null=True, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=120)
    last_name = models.CharField(max_length=120)
    gender = models.CharField(max_length=120, choices=gender_choice)

и в ваших взглядах

def add_information(request):
    submitted = False
    if request.method == "POST":
        form = UserInfo(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('add_information?submitted=True')
    else:
        form = UserInfo()
        if 'submitted' in request.GET:
            submitted = True
    return render(request, 'accounts/profile/tempplate.html', {'form': form, 'submitted':submitted})
Вернуться на верх