我需要爲我的Django項目中的每個用戶附加大量附加屬性。其中一些屬性是簡單的CharFields,其他的則更復雜ManyToManyFields。對我來說麻煩的是,在我挖掘方法來做到這一點時,我發現了兩個選擇:文檔中解釋的The user profile method和我看到在互聯網上浮動的user subclassing method。在Django中處理額外用戶數據的正確方法?
他們都看起來很複雜,我寧願不選擇一個,只發現我經過幾個月的發展需要回去切換到另一種方法,所以我在這裏問。 權利哪種方式?
我也在爲此而戰。配置文件會添加額外的不需要的圖層,而子分類會在數據庫中創建額外的不需要的表格(我相信),並且不會對'request.user'使用多餘的修改。這似乎是這樣一個常見的情況,你會認爲會有一個明確的,很好的方式來做到這一點。其他框架遵循「級聯」而不是「覆蓋」的範式,您可以輕鬆擴展所有基類,並且只需讓它們工作,但不會,這太方便了。 – mpen 2009-12-20 23:08:06
如果您希望User類擁有所有額外的字段,那麼在同步數據庫時可以使用它,但這需要一些額外的工作。您只需在特定模型中添加字段並手動更改數據庫表。它不漂亮,但沒有不需要的圖層和表格。您只需編寫: User.division = ForeignKey('Division') 然後將適當的列添加到表中。但是我相信這會是我自己的受虐狂;-)子類很好,特別是ORM會隱藏你的兩張表。 – gruszczy 2009-12-20 23:11:36
@gruszyczy:如您所說,可以簡單地將附加字段monkeypatch到現有模型上。但是你的代碼被破壞了。你必須這樣做才能正確地設置字段:models.ForeignKey('Division')。contribute_to_class(User,'division') – 2009-12-21 23:21:17