django,将项目添加到自定义保存方法中不起作用的ManyTomany



我确定这是我看不到的愚蠢的东西,但这是我拥有的

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()

哪个打印

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

,但site1.co.nz在M2M关系中没有持续。

看起来Django Admin分别保存M2M,该M2M在我的自定义保存方法中清除了M2M数据。

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.modeladmin.save_ryated

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))

最新更新