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__'