2014-05-22 46 views
0

我有两个型号:Page和自定义用户模型MyUserDjango的 - 自定义管理保存模型

这两种模式各有一个manytomanyfield:

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

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

当我一个成员添加到members manytomanyfield通过管理界面,我想新的归因Page对象在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文件要么做在admin.py

我试图从思想来代替#And I am quite lost....部分:
Link1
Link2

没有任何sucess!

回答

0

这是完全错误的。多对多的领域已经是双重的。你不需要在两端定义它。当您在Page定义members字段,然后MyUser将自动获得一个page_set访问这是关系的另一端,并且将用户添加到其成员将在用户的page_set自动显示任何页面。不需要任何代码。

+0

也许我误解,但我没有这样的。当我添加一个新的'member'对象到'members'多到许多'page'对象的领域,用户的许多一对多'mypages'属性不填充页面对象! :$ – Erwan

+1

也许我还不够清楚:你应该**没有定义一个mypages字段。反向访问器被称为'page_set',它是自动定义的。 –

+0

我刚刚意识到我不了解使用多对多字段。谢谢。顺便说一句,我要编辑我的问题并模拟这个错误,还是删除整个线程更好? – Erwan