checkbox - Django - pre-select checkboxes if value occurs in entry -
i have webapp tenants can select number of facets list of checkboxes. there exists many many relationship between facets , tenants. (companies have 'linked_facets' , facets have 'linked_companies' attribute)
the facets nested, used mptt package + custom html page create following nested list of checkboxes
<form action="." method="post" class="facetform">{% csrf_token %} <ul id="id_linked_facets"> {% recursetree facetten %} <li> <label><input type="checkbox" name= 'facet_link' value={{ node.pk }}><h3>{{ node.name }}</h3></label> {% if not node.is_leaf_node %} <ul class="children"> {{ children }} </ul> {% endif %} </li> {% endrecursetree %} </ul> <div class="text-right"> <a href="{% url 'feature_list'%}" class="btn btn-default">{% block cancel-button-text %}{% trans "cancel" %}{% endblock %}</a> <input type="submit" class="btn btn-primary" value="{% trans 'save' %}" /> </div> </form> this page accompanied following form:
class facetform(forms.modelform): widgets = { 'linked_facets': checkboxselectmultiple() } class meta: model = tenant fields = ['linked_facets'] the form works , database updated. however, everytime page opened of checkboxes unchecked. since number of facets expand, rather inconvenient (as user whish update 1 facet end having re-check of checkboxes). such pre populate checkboxes relevant information (meaning checkboxes facets have relationship tenant checked)
i used following view, think fetched of relevant information in view. not know how move information in form. used model forms, of done automatically. however, since custom html form have ourselves. of point in right direction on how this?
kind regards,
class facetupdate(tenantrootedmixin, updateview): """update tenant[linked facets]""" model = tenant #fields = ['linked_facets'] template_name = 'tenants/facet_list_edit.html' context_object_name = 'facetten' form_class = facetform def get_form_kwargs(self): kwargs = super(tenantrootedmixin, self).get_form_kwargs() kwargs['tenant'] = self.request.tenant kwargs['linked_facets'] = self.request.tenant.linked_facets return kwargs def get_success_url(self, **kwargs): return reverse('facet_list', args=[self.request.tenant.slug]) def get(self, request, *args, **kwargs): d = super(facetupdate, self).post(request, *args, **kwargs) self.object = self.get_object() return super(facetupdate, self).get(request, *args, **kwargs) def post(self, request, *args, **kwargs): d = super(facetupdate, self).post(request, *args, **kwargs) self.object = self.get_object() #create list of selected checkbox_ids hitlist = request.post.getlist('facet_link') #get current tenant currenttenant = tenant.objects.get(name=self.request.tenant) #get facets have been selected in form selected_facets = facetss.objects.filter(id__in=hitlist) currenttenant.linked_facets = selected_facets currenttenant.save() return d def form_valid(self, form): self.object = form.save() d = super(facetupdate, self).form_valid(form) django.contrib import messages messages.success(self.request, 'facetten aangepast') return d def get_context_data(self, **kwargs): d = super(facetupdate, self).get_context_data(**kwargs) d['facetten'] = facetss.objects.all() return d
Comments
Post a Comment