如何覆盖Django中的默认用户模型字段?

时间:2010-02-15 00:59:53

标签: django django-models

问题是默认用户模型没有为字段提供一些非常有用的选项,例如 unique = True 到电子邮件字段。

我读过这个问题: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/...

中的文件

1 个答案:

答案 0 :(得分:3)

这已经问过了...... How to make email field unique in model User from contrib.auth in Django

其他用户数据的django方法也在这里http://docs.djangoproject.com/en/dev/topics/auth/#auth-profiles

我并不完全是这种方法的粉丝,并且非常感谢你来自哪里,但有时候你必须和牛群一起去。