在django admin和modelform中实现具有多个select的复选框?

时间:2017-11-09 06:33:02

标签: django-forms django-views

我是django的新手,所以无法找到一种方法来实现复选框,多次选择我的自定义模型和django管理员。试过django文档,但仍然无法找到解决方案?the image is my project form wherein the technologies field should have a checkbox with multiple select. TIA

views.py

class ProjectCreate(CreateView):
model = Project
fields = ['projectid', 'title', 'description', 'startdate', 'enddate', 'cost', 'Project_type',
          'employeeid', 'technologies', 'clientid', 'document']


class ProjectUpdate(UpdateView):
model = Project
fields = ['projectid', 'title', 'description', 'startdate', 'enddate', 'cost', 'Project_type',
          'employeeid', 'technologies', 'clientid']

form-template.py

{% for fields in form %}
<div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
        <span class="text-danger small">{{ fields.errors }}</span>

    </div>
    <label class="control-label col-sm-2">{{ fields.label_tag }}</label>
    <div class="col-sm-10">{{ fields }}</div>
</div>
{% endfor %}

1 个答案:

答案 0 :(得分:1)

我们可以实现的是使用django-multiselectfield

  1. 首先安装django-multiselectfield
  

pip install django-multiselectfield

  1. Models.py中,我们需要导入multiselectfield,然后使用MultiSelectField作为模态字段并传递必需的参数。

    from django.db import models
    from multiselectfield import MultiSelectField
    
    MY_CHOICES = ((1, 'Value1'),
                  (2, 'Value2'),
                  (3, 'Value3'),
                  (4, 'Value4'),
                  (5, 'Value5'))
    
    #choices can be a list also
    
    class MyModel(models.Model):
    
        #....
    
        my_field = MultiSelectField(choices=MY_CHOICES,
                             max_choices=3,
                             max_length=3)
    

现在,在管理面板中,打开MyModel form时,您会看到5个复选框,其中最多只能选择3个定义的max_choices=3

如果要使用模板渲染modelform,则只需在Forms.py中指定字段。

如果要从另一个表中获取下拉数据,请参考此question