从标准 Django 形式 select 转换为 select2 的问题
Problem converting from standard django form select to select2
我正在尝试将 django 形式从使用标准 select 转换为 select2。我已按照说明安装 django-select-forms,将 select2 添加到 INSTALLED_APPS,并在 header 块
中包含 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 import <b>Select2Widget</b>
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': <b>Select2Widget</b> }
也就是说,由于您已经在 __init__
中指定了一些数据,将其定义为 class 属性可能更优雅:
from django_select2.forms import <b>Select2Widget</b>
class UploadFileForm(forms.ModelForm):
author = ModelChoiceField(
queryset=Photographer.objects.order_by('displayname'),
required=True,
widget=<b>Select2Widget</b>
)
我正在尝试将 django 形式从使用标准 select 转换为 select2。我已按照说明安装 django-select-forms,将 select2 添加到 INSTALLED_APPS,并在 header 块
中包含 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 import <b>Select2Widget</b>
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': <b>Select2Widget</b> }
也就是说,由于您已经在 __init__
中指定了一些数据,将其定义为 class 属性可能更优雅:
from django_select2.forms import <b>Select2Widget</b>
class UploadFileForm(forms.ModelForm):
author = ModelChoiceField(
queryset=Photographer.objects.order_by('displayname'),
required=True,
widget=<b>Select2Widget</b>
)