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

时间:2017-02-04 23:02:16

标签: django forms widget

是否有一种快速简便的方法来更改表单上的默认小部件

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

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']

1 个答案:

答案 0 :(得分:1)

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

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

我在这里使用了无线电选择。使用复选框并没有多大意义,因为您只想选择一个选项。

然后使用视图中的表单:

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