問題是默認的用戶模型沒有一些非常有用的選項,例如unique = True的字段給了電子郵件字段。如何重寫Django中的默認用戶模型字段?
我看了這個問題:Override default User model method,並檢查了Proxy Model的概念,但沒有任何效果。
起初我想:
from django.contrib.auth import models
class User(models.User):
class Meta:
proxy = True
email = EmailField('e-mail address', unique=True, blank=False)
這就造成:
django.core.exceptions.FieldError: Proxy model 'User' contains model fields.
所以未來是:
from django.contrib.auth import models
class User(models.User):
class Meta:
proxy = True
models.User.email = EmailField('e-mail address', unique=True, blank=False)
而這個 「解決方案」 已經沒有任何影響。默認用戶模型的行爲與以前相同。
我只對非猴子補丁解決方案感興趣。
編輯:好的。猴子補丁對我來說是可以接受的,但是怎樣才能合理呢? (我的意思是不改變這種在於/usr/pyshared/python2.6/...
文件)
啊,來吧......只是一點點的猴子生意? :-)不幸的是,我不認爲你會找到你真正想要的東西。 *每個人*都想以某種方式調整用戶模型,但是您發現Django數據庫的「類」不是* Python類,特別是在父類中重寫字段方面。 http://docs.djangoproject.com/en/dev/topics/db/models/#field-name-hiding-is-not-permitted – 2010-02-15 01:57:12
如果語言本身在內部支持它,猴子修補就足夠了;-)例如Ruby中的類是開放的,所以您可以在運行時更改甚至內置類的實現,因此用戶模型可以在Ruby中最多調整3行。 無論如何,感謝您的迴應。你知道如何讓這隻猴子補丁合理嗎? – 2010-02-15 02:16:30