代码之家  ›  专栏  ›  技术社区  ›  Dawid

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

  •  5
  • Dawid  · 技术社区  · 14 年前

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

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