我正在使用内置的Django Admin,我有两种类型的用户,都需要使用不同的URL进行调用,即http://127.0.0.1:8000/admin/staff
和http://127.0.0.1:8000/admin/customer
需要将用户模型分解为两个单独的模型{ {1}}和Staff
。 Customer
模型将用于管理员用户,Staff
模型将用于前端用户。
注意:我将数据库表名保留为默认的Customer
,auth_user
... etc
我已经在项目
中创建了名为auth_group
的应用
到目前为止,我已经尝试了以下操作:
models.py
users
admin.py
from django.contrib.auth.models import (
AbstractUser,Permission,Group,GroupManager)
from django.db import models
from django.utils.translation import gettext_lazy as _
class Staff(AbstractUser):
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
verbose_name = _('staff')
verbose_name_plural = _('staffs')
db_table = 'auth_user'
class Customer(AbstractUser):
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
verbose_name = _('customer')
verbose_name_plural = _('customers')
db_table = 'auth_user'
settings.py
from django.contrib import admin
from django.contrib.auth.models import Group,User,Permission
from django.contrib.auth.admin import GroupAdmin,UserAdmin
from django.utils.translation import ugettext_lazy as _
from django import forms
from django.forms import ModelForm,Select
from users.models import Staff,Customer
class MyGroupAdminForm(forms.ModelForm):
class Meta:
model = Group
fields = ('name','permissions')
permissions = forms.ModelMultipleChoiceField(
Permission.objects.exclude(content_type__app_label__in=[
'auth','admin','sessions','users','contenttypes']),widget=admin.widgets.FilteredSelectMultiple(_('permissions'),False))
class MyUserAdminForm(forms.ModelForm):
model = User
groups = forms.ModelChoiceField(Group.objects,label='Role')
class Meta:
model = User
fields = '__all__'
class CustomUserAdmin(UserAdmin):
form = MyUserAdminForm
fieldsets = (
(None,{'fields': ('username','password')}),(_('Personal info'),{'fields': ('first_name','last_name','email')}),(_('Permissions'),{'fields': ('is_active','is_staff','is_superuser','groups',)}),(_('Important dates'),{'fields': ('last_login','date_joined')}),)
class CustomGroupAdmin(GroupAdmin):
form = MyGroupAdminForm
# admin.site.unregister(User)
admin.site.unregister(Group)
# admin.site.register(User,CustomUserAdmin)
# admin.site.register(Group,CustomGroupAdmin)
admin.site.register(Staff,CustomUserAdmin)
admin.site.register(Group,CustomGroupAdmin)
现在,当我尝试更改任何职员用户时,出现以下错误:
AUTH_USER_MODEL = "users.Staff"
请指导我正确的操作方法
谢谢