我一直在构建一个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'.
这是models.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
到目前为止我尝试过:
我怀疑这可能与现有数据或其他一些依赖项有关。 所以...
我删除了- sqlite数据库,删除了所有迁移文件并运行
"python manage.py makemigrations"
和"python manage.py migrate"
. - 我跑
python manage.py flush
. - 我还尝试在删除之前将
editable=False
更改为editable=True
和迁移, 但它并没有改变任何东西。
也许还值得一提的是,我的"客户"模型与另一个模型的关系。
有人可以解释为什么 Django 阻止我删除此字段以及如何解决此问题吗?
谢谢! :)
有人可以解释我发生了什么以及如何解决这个问题吗?
正如错误所说,您有一个名为CustomerAdmin
的模型管理员。事实上:
<类'帐户.管理员.>客户管理员>:(管理员。E035) ">readonly_fields[1]"的值不是可调用对象、"客户管理员"的属性或"帐户"的属性。客户'。
对于readonly_fields
,它列出了customer_id
,但由于该字段不再可用,因此会引发错误。