I'm fairly new to Django, so I couldn't find a way to implement checkboxes with multiple select in to my custom modelforms and Django admin.
I tried the Django docs, but still couldn't find a solution.
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 %}
We can implement is using django-multiselectfield
django-multiselectfield
.
pip install django-multiselectfield
In Models.py
, we need to import multiselectfield
then use MultiSelectField
as modal field & pass required arguments.
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)
Now in admin panel when you open MyModel form
you will see 5 check boxes out of which you can only select a maximum of 3 as defined max_choices=3
If you are rendering modelform
using templates then you only need to specify the fields in Forms.py
.
If you're getting dropdown data from another table then refer to this question