Почему удаление UUIDField приводит к Django SystemCheckError

Я создавал веб-сайт Django и включил поле UUID «customer_id» в свою первоначальную модель «Клиент». Наконец, я решил бросить это. Но когда я пытаюсь удалить его из моего models.py, Django выдает

SystemCheckError: System check identified some issues:

ERRORS:
<class 'accounts.admin.CustomerAdmin'>: (admin.E035) The value of 'readonly_fields[1]' is not a callable, an attribute of 'CustomerAdmin', or an attribute of 'accounts.Customer'.

Вот код модели.py

    from django.db import models
    import uuid
    
    # Create a base model to make sure we keep track of creation and edits
    class ModelBaseClass(models.Model):
        date_created = models.DateTimeField(auto_now_add=True, null=True)
        date_modified = models.DateTimeField(auto_now=True, null=True)
    
        class Meta:
            abstract = True
    
    # Create your models here.
    class Customer(ModelBaseClass):
        customer_id = models.UUIDField(default=uuid.uuid4, #this is the field i try to drop
                                   editable=False, 
                                   unique=True)
        name = models.CharField(max_length=200, null=True)
        email = models.CharField(max_length=200, null=True)
            
        def __str__(self):
            return self.name

Что я пробовал до сих пор:

Я подозреваю, что это может быть связано с существующими данными или некоторыми другими зависимостями. Так...

  1. Я удалил базу данных sqlite, удалил все файлы миграции и запустил "python manage.py makemigrations" и "python manage.py migrate".
  2. Я побежал python manage.py flush.
  3. Я также пытался изменить editable=False на editable=True и мигрировать перед удалением, но это ничего не изменило.

Возможно, также стоит упомянуть, что моя модель «Клиент» связана с другой моделью.

Может ли кто-нибудь объяснить мне, почему Django не позволяет мне удалить это поле и как это решить?

Спасибо! :)

Потому что у вас есть CustomerAdmin, где вы используете customer_id, и теперь это больше недоступно.

Willem Van Onsem 09.04.2022 19:43
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
1
16
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Could someone explain me what's going on and how to resolve this?

Как говорит ошибка, у вас есть администратор модели с именем CustomerAdmin. Конечно:

<class 'accounts.admin.CustomerAdmin'>: (admin.E035) The value of 'readonly_fields[1]' is not a callable, an attribute of 'CustomerAdmin', or an attribute of 'accounts.Customer'.

Для readonly_fields отображается customer_id, но, поскольку это поле больше недоступно, возникает ошибка.

Я отредактировал вопрос, чтобы сделать его более конкретным.

Michael S 09.04.2022 19:55

Мне потребовалось немного времени, чтобы понять, что вы сказали «у вас есть модельный администратор с именем CustomerAdmin», но вы правы на 100%. Чтобы уточнить для других пользователей: в моем файле admin.py я добавил ModelAdmin с именем CustomerAdmin, который указывает readonly_fields. Одно из полей, на которые там ссылались, было «customer_id». (Я добавил его некоторое время назад, чтобы переопределить поля только для чтения, и совершенно забыл об этом). Джанго жаловался на эту ссылку. После удаления ссылки я смог удалить UUIDField в models.py без каких-либо проблем.

Michael S 09.04.2022 20:13

Другие вопросы по теме