Django - 自定义管理员保存模型

时间:2014-05-22 10:41:50

标签: python django django-admin save many-to-many

我有两个模型:Page和自定义用户模型MyUser

这两个模型各有一个很多地方:

class Page(models.Model):
    members = models.ManyToManyField(settings.AUTH_USER_MODEL)

class MyUser(AbstractUser):
    mypages = models.ManyToManyField(Page)
    objects = UserManager()

当我通过管理界面向members manytomanyfield添加成员时,我想在mypages属性中自动将新的属性Page对象添加到用户,所以我试图覆盖admin.py中的Page模型的save方法:

class PageAdmin(admin.ModelAdmin):
    def save_related(self, request, form, formsets, change):
        super(ModelAdmin, self).save_related(request, form, formsets, change)
        if 'members' in form.changed_data:
        #And I am quite lost....

这是个好主意吗?我应该在" Page模型中自定义保存"我的models.py文件中的方法是在admin.py中执行的吗?

我尝试用来自以下内容的想法替换#And I am quite lost....部分:
Link1
Link2

没有任何成功!

1 个答案:

答案 0 :(得分:0)

这完全是错的。多对多领域已经是双端的。您不需要在两端定义它。当您在members上定义Page字段时,MyUser会自动获得一个page_set访问者,这是该关系的另一端,以及任何将用户添加到其成员将自动显示在用户的page_set中。不需要任何代码。