Я создавал веб-сайт 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
Что я пробовал до сих пор:
Я подозреваю, что это может быть связано с существующими данными или некоторыми другими зависимостями. Так...
"python manage.py makemigrations"
и "python manage.py migrate"
.python manage.py flush
.editable=False
на editable=True
и мигрировать перед удалением,
но это ничего не изменило.Возможно, также стоит упомянуть, что моя модель «Клиент» связана с другой моделью.
Может ли кто-нибудь объяснить мне, почему Django не позволяет мне удалить это поле и как это решить?
Спасибо! :)
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
, но, поскольку это поле больше недоступно, возникает ошибка.
Я отредактировал вопрос, чтобы сделать его более конкретным.
Мне потребовалось немного времени, чтобы понять, что вы сказали «у вас есть модельный администратор с именем CustomerAdmin», но вы правы на 100%. Чтобы уточнить для других пользователей: в моем файле admin.py
я добавил ModelAdmin с именем CustomerAdmin
, который указывает readonly_fields
. Одно из полей, на которые там ссылались, было «customer_id». (Я добавил его некоторое время назад, чтобы переопределить поля только для чтения, и совершенно забыл об этом). Джанго жаловался на эту ссылку. После удаления ссылки я смог удалить UUIDField в models.py
без каких-либо проблем.
Потому что у вас есть
CustomerAdmin
, где вы используетеcustomer_id
, и теперь это больше недоступно.