django - ManyToManyField in Class Based Generic Views and Save Override -


we have class-based-generic view adds object manytomanyfield relationship. we're trying modify values on save() override relationships created on manytomanyfield, doesn't seem ever created in save(), we're forced call post_save method in get_success_url relationships created. seems very, ugly. how force relationships created before leave save()?

i've seen this answer on so, says override form_valid() create relationship, why need if they're created automatically somewhere between form_valid() , get_success_url()?

# models.py class payment(models.model):     invoice = models.manytomanyfield(invoice)     deposit_date = models.datefield()     check_number = models.charfield(max_length=100, blank=true, null=true)     description = models.textfield(blank=true, null=true)      def post_save(self):         """         manytomanyfield relationships aren't formed yet when overriding save() class based generic         views. call whenever you're saving payment object.         """         invoice in self.invoice.all():             # calcualtions make happy             invoice.save()  # views.py - override get_success_url() in updateview too. class paymentadd(createview):     model = payment     form_class = paymentform     context_object_name = 'object'     template_name = 'form.html'      def get_success_url(self):         self.object.post_save()         return reverse('payment-page') 

if has done each time payment saved, it's better leave responsibility model instead of moving view. best way use post_save signal, this:

in models.py, somewhere below definition of payment model:

from django.db.models.signals import post_save django.dispatch import receiver  @receiver(post_save, sender=payment) def my_handler(sender, instance, **kwargs):     invoice in instance.invoice.all():         # calcualtions make happy         invoice.save() 

on unrelated note, suggest use plural attribute names m2m fields: invoices instead of invoice in case. makes clearer fellow developers.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -