Django, adding item to manytomany within custom save method not working in admin

StackOverflow https://stackoverflow.com/questions/21319313

  •  01-10-2022
  •  | 
  •  

سؤال

I am sure this is something stupid that I cannot see, but here is what I have

def save(self, *args, **kwargs):
    print self.sites.all()
    super(Article, self).save(*args, **kwargs)
    self.sites.add(Site.objects.get(pk=1))
    print self.sites.all()

Which prints

[<Site: site2.co.nz>, <Site: site3.co.nz>]
[<Site: site2.co.nz>, <Site: site3.co.nz>, <Site: site1.co.nz>]

but site1.co.nz is not being persisted in the m2m relationship.

هل كانت مفيدة؟

المحلول

Looks like django admin saves the m2m separately which clears the m2m data in my custom save method.

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_related

class MyModelAdmin(admmin.ModelAdmin):
    def save_related(self, request, form, *args, **kwargs):
        super(ArticleAdmin, self).save_related(request, form, *args, **kwargs).
        obj = form.instance
        obj.sites.add(Site.objects.get(id=1))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top