Daniel, I think that's what is happening too. I'm wondering if the save issue has something to do with my Invoice admin class: class CustomerInvoiceAdmin(admin.ModelAdmin): inlines = [ CustomerInvoiceOrderInline, ] def save_formset(self, request, form, formset, change): instances = formset.save(commit=False) units = 0 for instance in instances: instance.save() formset.save()
Thanks On May 13, 12:13 pm, Daniel Roseman <roseman.dan...@googlemail.com> wrote: > On May 13, 11:28 am, Alfonso <allanhender...@gmail.com> wrote: > > > > > Discovered a weird bug in my custom save method for a model. Setup is > > a simple invoice model linked to multiple invoice order models (fk to > > invoice) and the invoice model holds data like total number of units > > of ordered... i.e. > > > Invoice order 1: > > 2 x X DVD @$9.99 > > Invoice order 2: > > 5 x Y DVD @$9.99 > > > Invoice: > > Total units: 7 > > > So to get that invoice total I have a custom save method: > > > def save(self): > > # Grab total invoice units > > units = 0 > > for item in self.customer_invoice_orders.all(): > > units += item.quantity > > self.invoice_units = units > > super(CustomerInvoice, self).save() > > > This is all set up in admin with invoice order inlines so the admin > > user can edit and add to related invoice orders. > > > I thought it all works fine but if I adjust the quantity figure in an > > inline invoice order and hit save the new total in the parent invoice > > doesn't get updated, only gets updated if I hit save and continue > > first, then save again. > > > I'm sure it's something very elementary I'm overlooking > > > Thanks > > I expect this is happening because inlines are saved *after* the > parent model. So, think what happens: you click save, and Django first > goes to save the invoice. It goes to the database to get all the > existing InvoiceOrders, but only finds the old values because the new > ones haven't been saved yet. Only then does it go and save the > inlines. But the second time you click save, the new values in the > inlines have already been saved, so it picks them up, and properly > updates your parent model. > > I can't think of a very good way of solving this. One possibility > might be to put the update code in the form, rather than the model. > -- > DR. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---