Как заполнить выпадающий выбор из базы данных в форме django
Я хочу попробовать заполнить поля из базы данных в форме Django, но она показывает мне пустоту. Может ли кто-нибудь подсказать мне идею? Здесь я делюсь своим кодом.
class circleform(forms.ModelForm):
class Meta:
model = curd
fields = ['Zone','Circle','circle_code','circle_address']
widgets = {
'Zone':forms.Select(attrs = {'class':'form-control'}),
'Circle':forms.TextInput(attrs = {'class':'form-control'}),
'circle_code':forms.TextInput(attrs = {'class':'form-control'}),
'circle_address':forms.TextInput(attrs = {'class':'form-control'}),
}
Думаю, вы можете использовать переопределение полей, как
class YourForm(forms.ModelForm):
your_foreign_key_field_name = forms.ModelChoiceField(queryset=YourChoiceModel.objects.all())
class Meta:
....
или если вам просто нужна форма, которая отражает все поля вашей модели, попробуйте использовать Admin https://docs.djangoproject.com/en/4.1/intro/tutorial07/
Если вы ищете поле, которое будет заполнять ваш запрос на основе запроса, то ModelChoiceField - это то, что вы ищете. Вы можете использовать его следующим образом
class circleform(forms.ModelForm):
your_field = ModelChoiceField(queryset="you query here to populate choice field")
# ...
но если у вас есть некоторые жестко заданные варианты, которые вы хотите заполнить, то вы можете передать choices=YOUR_CHOICES_TUPLE
подобным образом.
class circleform(forms.ModelForm):
class Meta:
model = curd
fields = ['Zone','Circle','circle_code','circle_address']
YOUR_CHOICES = (
('', 'Select your zone'),
('1', 'First'), #First one is the value of the select option and the second is the displayed value in the option
('2', 'second'),
)
widgets = {
'Zone':forms.Select(attrs = {'class':'form-control'}, choices=YOUR_CHOICES), # new
}