Как заполнить выпадающий выбор из базы данных в форме 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

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