在基于通用 class 的视图中将小部件从 select 更改为复选框

Change widget from select to check box in generic class based view

有没有快速简便的方法来更改表单上的默认小部件

例如,我想将国家/地区的 select 框更改为复选框。

model.py

class Publisher(models.Model):
    countryChoices = (('CA','Canada'),('US','United States'),('MX','Mexico'))
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(choices = countryChoices, max_length=30)
    website = models.URLField()

观看次数

class PublisherCreate(CreateView):
    model = Publisher
    fields = ['name', 'address', 'city', 'state_province', 'country',  'website']

您可以在那里定义自定义表单并自定义小部件:

class PublisherForm(forms.ModelForm):
    class Meta
        model = Publisher
        fields = ['name', 'address', 'city', 'state_province', 'country',  'website']
        widgets = {
            'country': forms.RadioSelect,
        }

我在这里使用过收音机 select。使用复选框实际上没有任何意义,因为您只想 selected.

选择一个

然后在视图中使用表单:

class PublisherCreate(CreateView):
    model = Server
    form_class = PublisherForm