从标准 django 表单选择转换为选择2时出现问题



我正在尝试将django表单从使用标准选择转换为选择2。我按照说明安装了 django-select-forms,将 select2 添加到INSTALLED_APPS,并在标头块中包含 select2 链接和脚本

这是我的原始代码

Model.py

class Photographer(models.Model):
author_id = models.CharField(max_length=50, primary_key=True)
displayname = models.CharField(max_length=50)

forms.py

class UploadFileForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(UploadFileForm, self).__init__(*args, **kwargs)
self.fields['author'].required = True
self.fields['author'].queryset = 
Photographer.objects.all().order_by('displayname')

无论如何,我可以在不更改模型的情况下做到这一点吗?

通常,您只需要指定您使用的小部件:

from django_select2.forms importSelect2Widget
class UploadFileForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(UploadFileForm, self).__init__(*args, **kwargs)
self.fields['author'].required = True
self.fields['author'].queryset = Photographer.objects.order_by('displayname')
class Meta:
widgets = {'author':Select2Widget}

话虽如此,由于您已经在__init__中指定了一些数据,因此将其定义为类属性可能会更复杂:

from django_select2.forms importSelect2Widget
class UploadFileForm(forms.ModelForm):
author = ModelChoiceField(
queryset=Photographer.objects.order_by('displayname'),
required=True,
widget=Select2Widget
)

最新更新