2014-05-22 55 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