Ошибка 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',)**

Вернуться на верх