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
,它是自动定义的。我刚刚意识到我不理解多对多字段的用法。非常感谢。顺便说一下,我要编辑我的问题并模拟这个错误,还是删除整个线程更好?不,不要删除问题,它可能会在将来帮助其他人。