Forms.RadioSelect просто показывает поле ввода

models.py

class Trainee(models.Model):
TraineeID = models.AutoField(primary_key=True)
Name = models.CharField(max_length=50)
Course = models.CharField(max_length=40)
BatchNo = models.CharField(max_length=15)
Gender = models.CharField(max_length=10)
DateofBirth = models.CharField(max_length=30)
ContactNo = models.CharField(max_length=20)
ContactAddress = models.CharField(max_length=80)
EmailAddress = models.EmailField()

class Meta():
    db_table = "Trainee"

forms.py

class TraineeForm(forms.ModelForm):
class Meta():
    model = Trainee
    GENDER_CHOICES = [('M', 'Male'), ('F', 'Female'), ('O', 'Other')]
    Gender = forms.ChoiceField(widget=forms.RadioSelect, choices=GENDER_CHOICES )
    fields = ("__all__")

html страница

                    <div class="form-group row">
                        <label class="col-sm-3 col-form-label"> Gender: </label>
                        <div class="col-sm-4">
                            {{form.Gender}}
                        </div>
                    </div>

Я впервые использую radioselect в django. Я просмотрел множество обсуждений о том, как его использовать. Я думаю, что все сделал правильно. Но на моей странице пол не отображается как радиовыбор, а скорее как обычное поле ввода, кто-нибудь знает почему? Любая помощь будет оценена по достоинству. введите описание изображения здесь

Ваше поле должно быть указано в классе ModelForm, поэтому:

class TraineeForm(forms.ModelForm):
    GENDER_CHOICES = [('M', 'Male'), ('F', 'Female'), ('O', 'Other')]
    Gender = forms.ChoiceField(
        widget=forms.RadioSelect, choices=GENDER_CHOICES
    )

    class Meta:
        model = Trainee
        fields = '__all__'

Однако более логично указать опции:

class Trainee(models.Model):
    GENDER_CHOICES = [('M', 'Male'), ('F', 'Female'), ('O', 'Other')]
    trainee_id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50)
    course = models.CharField(max_length=40)
    batch_no = models.CharField(max_length=15)
    gender = models.CharField(max_length=10, choices=GENDER_CHOICES)
    date_of_birth = models.CharField(max_length=30)
    contact_no = models.CharField(max_length=20)
    contact_address = models.CharField(max_length=80)
    email_address = models.EmailField()

    class Meta:
        db_table = 'Trainee'

и затем укажите виджет в форме:

class TraineeForm(forms.ModelForm):
    class Meta:
        model = Trainee
        widgets = {'gender': forms.RadioSelect}
        fields = '__all__'
Вернуться на верх