def get_weak_formset(self, weak, item=None, postdata=None): model_to_add_field = weak['item_field'] if 'prefix' in weak: fsargs = {'prefix': weak['prefix']} else: fsargs = {'prefix': weak['field_name']} if item: extra_excludes = one_to_many_formset_excludes(item, weak['model']) fsargs['queryset'] = getattr(item, weak['field_name']).all() else: if issubclass(weak['model'], AbstractValue): extra_excludes = ['value_meaning'] else: extra_excludes = [] fsargs['queryset'] = weak['model'].objects.none() if postdata: fsargs['data'] = postdata all_excludes = [model_to_add_field, weak['model'].ordering_field] + extra_excludes formset = ordered_formset_factory( weak['model'], exclude=all_excludes, ordering_field=weak['model'].ordering_field ) final_formset = formset(**fsargs) return final_formset
def get_formset_class(self): extra_excludes = one_to_many_formset_excludes(self.item, self.model_to_add) all_excludes = [self.model_to_add_field, ] + extra_excludes if self.ordering_field: all_excludes.append(self.ordering_field) kwargs = {} form = self.get_form() if form: kwargs.update(form=form) if self.formset_class: kwargs.update(formset=self.formset_class) formset = self.get_formset_factory()( model=self.model_to_add, parent_model=self.model_base, fk_name=self.model_to_add_field, exclude=all_excludes, can_order=self.is_ordered, can_delete=True, extra=0, widgets=get_aristotle_widgets(self.model_to_add, ordering_field=self.ordering_field), **kwargs ) formset.is_ordered = self.is_ordered if self.ordering_field: formset.ordering_field = self.ordering_field return formset
def get_formset(self): extra_excludes = one_to_many_formset_excludes(self.item, self.model_to_add) all_excludes = [self.model_to_add_field, self.ordering_field] + extra_excludes formset = ordered_formset_factory(self.model_to_add, all_excludes) return formset
def get_weak_formset(self, weak, item=None, postdata=None, clone=False): model_to_add_field = weak['item_field'] if 'prefix' in weak: fsargs = {'prefix': weak['prefix']} else: fsargs = {'prefix': weak['field_name']} if item and not clone: extra_excludes = one_to_many_formset_excludes(item, weak['model']) fsargs['queryset'] = getattr(item, weak['field_name']).all() else: if issubclass(weak['model'], AbstractValue): extra_excludes = ['value_meaning'] else: extra_excludes = [] fsargs['queryset'] = weak['model'].objects.none() extra = 0 if clone: initial = [] from django.forms.models import model_to_dict for index, obj in enumerate( getattr(item, weak['field_name']).all()): o = model_to_dict(obj) ordering_field = weak['model'].ordering_field if ordering_field and ordering_field in o.keys(): o['ORDER'] = o.pop(weak['model'].ordering_field) for k in [ 'pk', 'id' ]: # TODO: do we need to remove the FK field? eg. 'valueDomain' o.pop(k, None) initial.append(o) if 'parent' in o.keys(): # Only needed for FrameworkDimensions # Blank when cloning o['parent'] = None fsargs['initial'] = initial extra = len(initial) if postdata: fsargs['data'] = postdata all_excludes = [model_to_add_field, weak['model'].ordering_field ] + extra_excludes formset = ordered_formset_factory( weak['model'], exclude=all_excludes, extra=extra, ordering_field=weak['model'].ordering_field) final_formset = formset(**fsargs) return final_formset