2013-03-08 82 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