2011-06-14 45 views
3

我想猴子從Django補丁用戶模型。你可以在哪裏修補Django用戶模型?

我的代碼:

from django.db import models 

from django.contrib.auth.models import User 
User.add_to_class('secret_question', models.CharField(max_length="100")) 
User.add_to_class('answer', models.CharField(max_length="100")) 
User.add_to_class('DOB', models.DateField()) 

我在哪裏可以把這個代碼,以便python manage.py syncdb將創建正確的表?

我試過主目錄models.py,我嘗試過的應用程序的目錄的models.py(這兩個沒有產生正確的表),我試圖把它放在項目的settings.py(錯誤,無法運行)。

回答

6

請看看Storing additional information about users部分的認證文檔。它提出了一種更簡潔的方式來將附加信息添加到用戶對象。

如果您想存儲與您的用戶相關的附加信息,Django會提供一種方法來指定特定於站點的相關模型(稱爲「用戶配置文件」)。

+0

從我讀,用戶配置文件簡單地創建兩個表與一對一的關係?如果是這種情況,那麼像select *這樣的某些查詢是否需要額外的連接,從而降低效率? – Derek 2011-06-14 21:58:00

+1

我不知道你的項目的範圍,但我會擔心可維護性,以及後期的性能。此外,你通過在User對象上使用提供的'get_profile'方法明確要求'profile' - 然後查詢附加表,而不用'join'我猜。 – miku 2011-06-14 22:04:23

+0

但我肯定會考慮使用用戶配置文件技術,但是,您知道如何使用add_to_class來完成嗎? – Derek 2011-06-14 22:09:31

2

如果你真的想要猴子補丁的用戶模型,已經存在一個這樣的應用程序。 Django-primate

模塊化django用戶。

這Django應用猴子補丁 的Django爲了有一個自定義用戶 模型,可插入 django.contrib.auth應用。