Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-自定义管理员保存模型_Python_Django_Django Admin_Save_Many To Many - Fatal编程技术网

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

Python Django-自定义管理员保存模型,python,django,django-admin,save,many-to-many,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() 当我通过管理界面向membersm

我有两种型号:
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
属性中自动向用户添加新的属性页面对象,因此我试图覆盖admin.py中页面模型的保存方法:

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....
这是个好主意吗?我应该在我的
models.py
文件中的“Page model custom save”方法中这样做,还是在
admin.py
中这样做

我试图用以下想法替换
,但我完全迷路了……
部分:



没有任何成功

这是完全错误的。多对多字段已经是双端字段。您不需要在两端都定义它。当您在
页面
上定义
成员
字段时,
MyUser
将自动获得一个
页面集
访问器,它是关系的另一端,任何将用户添加到其成员的页面都将自动显示在用户页面集中。不需要任何代码。

也许我误解了,但我没有这样的代码。当我向
页面
对象的
成员
多对多字段添加新的
成员
对象时,用户的多对多
mypages
属性不会填充页面对象!:$也许我不够清楚:根本不应该定义mypages字段。反向存取器称为
page\u set
,它是自动定义的。我刚刚意识到我不理解多对多字段的用法。非常感谢。顺便说一下,我要编辑我的问题并模拟这个错误,还是删除整个线程更好?不,不要删除问题,它可能会在将来帮助其他人。