你好,我试图使django自定义用户模型,但我得到以下错误。-在
错误:
auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'Freelancer.groups'. HINT: Add or change a related_name argument to the definition for 'User.groups' or 'Freelancer.groups'. auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'Freelancer.user_permissions'. HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'Freelancer.user_permissions'. login.Freelancer.groups: (fields.E304) Reverse accessor for 'Freelancer.groups' clashes with reverse accessor for 'User.groups'. HINT: Add or change a related_name argument to the definition for 'Freelancer.groups' or 'User.groups'. login.Freelancer.groups: (fields.E331) Field specifies a many-to-many relation through model 'login.Freelancer_groups', which has not been installed. login.Freelancer.user_permissions: (fields.E304) Reverse accessor for 'Freelancer.user_permissions' clashes with reverse accessor for 'User.user_permissions'. HINT: Add or change a related_name argument to the definition for 'Freelancer.user_permissions' or 'User.user_permissions'. login.Freelancer.user_permissions: (fields.E331) Field specifies a many-to-many relation through model 'login.Freelancer_user_permissions', which has not been installed.
System check identified 6 issues (0 silenced).
模型.py:
from django.contrib.auth.tests.custom_user import CustomUserManager
from django.db import models
from django.utils import timezone
from django.utils.http import urlquote
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
from crm import settings
class FreelancerManager(BaseUserManager):
def create_user(self, name, skills, password=None):
if not name:
raise ValueError('Users must have a unique name ')
user = self.model(
name=self.name,
skills=skills,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, name, skills, password):
"""
Creates and saves a superuser with the given email, date of
birth and password.
"""
user = self.create_user(
name,
password=password,
skills=skills,
)
user.is_admin = True
user.save(using=self._db)
return user
class Freelancer(AbstractBaseUser, PermissionsMixin):
name = models.OneToOneField(settings.AUTH_USER_MODEL,
related_name='Freelancer_profile',
verbose_name='name',
max_length=20,
unique=True, )
field_of_interest = models.CharField(max_length=200)
skills = models.TextField()
experience = models.TextField()
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = FreelancerManager()
USERNAME_FIELD = 'name'
REQUIRED_FIELDS = ['skills']
class Meta:
db_table = 'auth_user'
verbose_name = _('user')
verbose_name_plural = _('users')
def get_absolute_url(self):
return "/users/%s/" % urlquote(self.name)
def get_short_name(self):
return self.name
def get_full_name(self):
return self.name
def __str__(self): # __unicode__ on Python 2
return self.name
def has_perm(self, perm, obj=None):
# "Does the user have a specific permission?"
# # Simplest possible answer: Yes, always
return True
def has_module_perms(self, applabel):
# "Does the user have permissions to view the app `app_label`?"
# Simplest possible answer: Yes, always
return True
@property
def is_staff(self):
# "Is the user a member of staff?"
# "Simplest possible answer: All admins are staf"
return self.is_admin
# class Clients(models.Model):
# name = models.CharField(max_length=20)
# firm_name = models.CharField(max_length=20)
# reference = models.CharField(max_length=200)
# chu = models.CharField(max_length=200)
#
# def __str__(self):
# return self.name
管理员py:
^{pr2}$
您需要将
AUTH_USER_MODEL
设置设置为指向您的自由职业者类,这样Django知道不加载默认的用户模型。在另外,对于自由职业者来说,拥有一对一的用户是没有意义的;这是一个替代的模式。在
相关问题 更多 >
编程相关推荐