I am using Django 1.5. I have the following model:
我正在使用Django 1.5。我有以下型号:
class User(AbstractBaseUser):
#id = models.IntegerField(primary_key=True)
#identifier = models.CharField(max_length=40, unique=True, db_index=True)
username = models.CharField(max_length=90, unique=True, db_index=True)
create_time = models.DateTimeField(null=True, blank=True)
update_time = models.DateTimeField(null=True, blank=True)
email = models.CharField(max_length=225)
password = models.CharField(max_length=120)
external = models.IntegerField(null=True, blank=True)
deleted = models.IntegerField(null=True, blank=True)
purged = models.IntegerField(null=True, blank=True)
form_values_id = models.IntegerField(null=True, blank=True)
disk_usage = models.DecimalField(null=True, max_digits=16, decimal_places=0, blank=True)
objects = UserManager()
USERNAME_FIELD = 'email'
class Meta:
db_table = u'galaxy_user'
I am getting this error when running ./manage.py syncdb
:
运行./manage.py syncdb时出现此错误:
FieldError: Local field 'password' in class 'User' *es with field of similar name from base class 'AbstractBaseUser'
I tried removing the password field from the model but it is not authenticating even if the password field is removed from the model. I am using my custom Django authentication:
我尝试从模型中删除密码字段,但即使从模型中删除了密码字段,也没有进行身份验证。我正在使用我的自定义Django身份验证:
class AuthBackend:
def authenticate(self, username=None, password=None):
if '@' in username:
kwargs = {'email': username}
else:
kwargs = {'username': username}
try:
user = User.objects.get(**kwargs)
if user.check_password(password):
return user
except User.DoesNotExist:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
1 个解决方案
#1
1
Field name “hiding” is not permitted in Django unlike with normal python inheritance
与普通的python继承不同,Django中不允许使用字段名称“hidden”
just use the password field provided by the abstract user and do any custom saving/checks in the save method or in a form/api
只需使用抽象用户提供的密码字段,并在save方法或表单/ api中进行任何自定义保存/检查
read here for more info on this:
在这里阅读更多信息:
https://docs.djangoproject.com/en/1.8/topics/db/models/#field-name-hiding-is-not-permitted
#1
1
Field name “hiding” is not permitted in Django unlike with normal python inheritance
与普通的python继承不同,Django中不允许使用字段名称“hidden”
just use the password field provided by the abstract user and do any custom saving/checks in the save method or in a form/api
只需使用抽象用户提供的密码字段,并在save方法或表单/ api中进行任何自定义保存/检查
read here for more info on this:
在这里阅读更多信息:
https://docs.djangoproject.com/en/1.8/topics/db/models/#field-name-hiding-is-not-permitted