2013-03-08 79 views
2

说我是从Django的用户类继承:更新了继承的django模型字段属性?

# import AbstractUser class .... 
class MyUser(AbstractUser): 

    gender = models.Charfield(.... 
    .... 
    # I want to make the email field blank=False and unique=True 
    # however, to my knowledge, python doesn't allow you to 
    # override inherited fields 

所以如何让我的电子邮件领域的空白=假和独特=真。注意:我也使用South,所以南方友好的代码会很好。 (注:我使用Django 1.5,所以希望有一个解决方案,所以我不会要创建AbstractBaseUser我自己的用户模型)

回答

2
class MyUser(AbstractUser): 

    gender = models.Charfield(.... 

    def __init__(self, *args, **kwargs): 
     super(self, MyUser).__init__(*args, **kwargs) 
     email = models.EmailField(blank=False, unique=True) 
     email.contribute_to_class('email', self) 
+0

试图超越电子邮件,千万不要以为它的工作,因为南表示他们是重复的领域。另请参阅http://stackoverflow.com/a/6899713/749477。 – Derek 2013-03-08 14:52:01

+0

我忘了你可以通过使用AbstractBaseUser而不是AbstractUser – catherine 2013-03-08 14:55:45

+0

将电子邮件定义为AbstractUser中的一个字段,这是我想要使用的类而不是AbstractBaseUser。所以,当你的答案有效时,这并不是压倒性的,这是我所喜欢的。 – Derek 2013-03-08 15:00:05