Ошибка django: Значение 'ordering[0]' ссылается на 'username', которое не является атрибутом 'accounts.clinic_staff'
Я расширил пользовательскую модель пользователя моих счетов, используя поле "один к одному", и оно работало нормально. Но когда я попытался настроить его для отображения дополнительной информации, такой как номер_сотрудника и местоположение, была выдана следующая ошибка:
<class 'accounts.admin.staffAdmin'>: (admin.E033) Значение 'ordering[0]' относится к 'username', которое не является атрибутом 'accounts.clinic_staff'.
<вот мой код accounts>models.py:
from datetime import date
import email
import imp
from pyexpat import model
from tkinter import CASCADE
from tkinter.tix import Tree
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
class MyAccountManager(BaseUserManager):
def create_user(self, email, username, password=None,):
if not email:
raise ValueError('Email address is required')
if not username:
raise ValueError('Username is required')
user = self.model(
email=self.normalize_email(email),
username = username,
)
user.set_password(password)
user.save(using = self.db)
return user
def create_superuser(self, email, username, password):
user = self.create_user(
email=self.normalize_email(email),
password = password,
username = username,
)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save(using = self.db)
return user
class Account(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
username = models.CharField(max_length=30, unique=True)
date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
#is_clinic_staff = models.BooleanField(default=False)
#staff_number = models.CharField(max_length=10, unique=True)
is_superuser = models.BooleanField(default=False) #note for self - these fields are required
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username',]
objects = MyAccountManager()
def __str__(self):
return self.email
def has_perm(self, perm, obj=None):
return self.is_admin # note to self - required
def has_module_perms(self, app_Label):
return True
class clinic_staff(models.Model):
staff = models.OneToOneField(Account, on_delete=models.CASCADE)
location = models.CharField(max_length=255)
staff_number = models.IntegerField()
def __str__(self):
return self.staff.username
код my accounts admin.py
from django.contrib import admin
from .models import clinic_staff
from accounts.models import Account
from accounts.models import clinic_staff
from django.contrib.auth.admin import UserAdmin
class AccountAdmin(UserAdmin):
list_display = ('email', 'username', 'date_joined', 'last_login', 'is_admin', 'is_staff')
search_field = ('email', 'username',)
readonly_field = ('date_joined', 'last_login')
filter_horizontal = ()
list_filter = ()
fieldsets = () # note to self: required field
class staffAdmin(UserAdmin):
list_display = ('location', 'staff_number')
search_field = ('location', 'staff_number')
filter_horizontal = ()
list_filter = ()
fieldsets = ()
admin.site.register(Account, AccountAdmin)
admin.site.register(clinic_staff, staffAdmin)
hello вы выполнили миграцию?
ок я вижу
если вы не находитесь в производстве, попробуйте удалить свою базу данных
и бежать
manage.py makemigrations manage.py migrate
У меня была такая же проблема, и я решил ее следующим образом:
Добавьте атрибут упорядочивания в файл admin.py следующим образом:
class staffAdmin(UserAdmin):
list_display = ('location', 'staff_number')
search_field = ('location', 'staff_number')
filter_horizontal = ()
list_filter = ()
fieldsets = ()
**ordering = ('username',)**