django admin inlines, a different kind -
class parent(models.model): auto_inline_data = models.booleanfield(default=false) class child(models.model): field1 = models.charfield() field2 = models.charfield()
if auto_inline_data = true
need delete old entries , enter new entries based on calculation. have done : in clean method of baseinlineformset check auto_inline_data , if true delete old rows , create new rows. in save_formset(self, request, form, formset, change) if auto_inline_data true return without saving form.
relevant codes :
class childinlineformset(baseinlineformset): def clean(self): super(childinlineformset,self).clean() if any(self.errors): return if parent.auto_inline_data: child.objects.filter(fk=parent).delete() child.objects.create(*args, **kwargs) child.objects.create(*args, **kwargs) in admin.py class parentadmin(admin.modeladmin): def save_formset(self, request, form, formset, change): if formset.model._meta.db_table == 'child': if formset.data['auto_inline_data']: return
while saving when old data exists , auto_inline_data true
error
exception value:'childformformset' object has no attribute 'new_objects' exception location: python2.7/site-packages/django/contrib/admin/options.py in construct_change_message, line 688
is there other way achieve objective or code needs modifications. in advance.
Comments
Post a Comment