![](/img/trans.png)
[英]Running syncdb on Django project not working: Can't create/write to file
[英]I can't syncdb my project with custom user in Django
我在Django模型中有用于创建自定义用户的下一个代码:从django.db导入模型
#Clases abstractas para los usuarios personalizados
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
#El mannager que seria nuestro objects que es la transicion entre modelo y la bd
class MiMannager(BaseUserManager): #Nos exige create_user y create_superuser
#Metodo abstracto para crear usuarios
def _create_user(self, username, dni, password, is_staff, is_superuser, **extra_fields):
if not username:
raise ValueError('El username debe ingresarse')
user = self.model(username = username, dni = dni, is_active = True, is_staff = is_staff, is_superuser = is_superuser, **extra_fields)
user.set_password(password)
#En que base de datos se va a guardar
user.save(using=self._db)
return user
#Dos metodos diferentes para crear usuarios
def create_user(self, username, dni, password=None, **extra_fields):
return self._create_user(username, dni, password, False, False, **extra_fields)
def create_superuser(self, username, dni, password, **extra_fields):
return self._create_user(username, dni, password, True, True, **extra_fields)
#PermissioMixin es para los permisos del superusuario
class Usuario(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=140, unique=True)
dni = models.IntegerField(unique=True)
nombre = models.CharField(max_length=140)
apellidos = models.CharField(max_length=140)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
objects = MiMannager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['dni']
所以我得到一个错误,如:
CommandError: One or more models did not validate:
auth.user: Accessor for m2m field 'groups' clashes with related m2m field 'Group.user_set'. Add a related_name argument to the definition for 'groups'.
auth.user: Accessor for m2m field 'user_permissions' clashes with related m2m field 'Permission.user_set'. Add a related_name argument to the definition for 'user_permissions'.
Principal.usuario: Accessor for m2m field 'groups' clashes with related m2m field 'Group.user_set'. Add a related_name argument to the definition for 'groups'.
Principal.usuario: Accessor for m2m field 'user_permissions' clashes with related m2m field 'Permission.user_set'. Add a related_name argument to the definition for 'user_permissions'.
我只是在学习教程,但是我不明白我的代码有什么问题。
尝试使用:
class Usuario(models.Model):
username = models.CharField(max_length=140, unique=True)
dni = models.IntegerField(unique=True)
nombre = models.CharField(max_length=140)
apellidos = models.CharField(max_length=140)
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['dni']
objects = MiMannager()
def __unicode__(self):
return self.username
class Meta:
db_table = 'users'
def is_authenticated(self):
return True
def is_active(self):
return True
def is_staff(self):
return True
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
注意,我从Usuario的 models.Model继承。
并在settings.py中
AUTH_USER_MODEL = 'app_name.Usuario'
您可能还想看一个示例项目,该项目用于通过Drupal users表对Django应用进行身份验证。
请检查存储库的drupal_auth文件夹(请检查manager.py )。
还要检查同一存储库的forums / settings.py的最后几行。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.