0

在我的 django 应用程序中,我有一个带有 CenterType 字段(外键)的 CenterModel。我正在使用 django-select2 ModelSelect2Widget 来表示表单中的 CenterType。使用 ModelSelect2Widget 数据不会预渲染到页面上,因此我必须先在搜索框中输入内容,然后才能在 select2 小部件中看到 CenterTypes 名称。由于没有太多的中心类型,有没有办法将所有选项预渲染到页面上,所以我可以看到像这张图片一样的小部件 如您所见,所有选项从一开始就可用

如您所见,所有选项从一开始就可用。我不需要输入任何内容来查看我希望 Center 类型的小部件看起来那样的选项

class CenterModel(models.Model):

    name = models.CharField(verbose_name=_("Nombre"), max_length=50, unique=True,blank=False, null=False)

    center_type_id = models.ForeignKey("CenterTypeModel", verbose_name=_("Tipo"),
                                                 blank=True, null=True, on_delete=models.SET_NULL,
                                                 related_name="centers")
class CenterTypeModel(models.Model):

    name = models.CharField(verbose_name=_("Nombre"),unique=True, max_length=50, blank=False, null=False)
    description = models.TextField( verbose_name=_("Descripción"),max_length=500, blank=True, null=True) #TODO saber si esto debe ser unico

    def __str__(self):
        return self.name

from django_select2.forms import ModelSelect2Widget

class CenterForm(forms.ModelForm):

    class Meta:
        model = CenterModel
        exclude = ("id",)
        widgets = {
            'name':forms.TextInput(attrs={'class': 'form-control'}),
            'center_type_id' : ModelSelect2Widget(model=CenterTypeModel, queryset=CenterTypeModel.objects.filter(),
                                            search_fields=['name__icontains'],
                                            attrs={'style': 'width: 100%;'}),
4

0 回答 0