有多种方法可以以 django 形式提供初始数据。
至少其中一些是:
1) 提供初始数据作为字段参数。
class CityForm(forms.Form):
location = ModelChoiceField(queryset=City.objects.all(), initial='Munchen')
2)在表单的init方法中设置:
class CityForm(forms.Form):
location = ModelChoiceField(queryset=City.objects.all())
def __init__(self, *args, **kwargs):
super(JobIndexSearchForm, self).__init__(*args, **kwargs)
self.fields['location'].initial = 'Munchen'
3) 实例化表单时传递带有初始值的字典:
#views.py
form = CityForm(initial={'location': 'Munchen'})
在你的情况下,我想这样的事情会起作用..
class CityForm(forms.Form):
location = ModelChoiceField(queryset=City.objects.all())
def __init__(self, *args, **kwargs):
super(JobIndexSearchForm, self).__init__(*args, **kwargs)
if City.objects.all().exists():
self.fields['location'].initial = ''
else:
self.field['location'].initial = City.objects.all()[:1]
这一切都只是为了演示,您必须根据您的情况进行调整。