gpt4 book ai didi

Django管理员在字段名称更改后给出错误 "'模型的对象没有属性 'field_name'“

转载 作者:行者123 更新时间:2023-12-04 10:35:43 25 4
gpt4 key购买 nike

为了改善我的代码和数据库,我需要更改模型中的字段名称,使其远离混淆且接近保留字的值。

原始模型实际上是这样的:

class Company(models.Model):
my_old_name = models.CharField(max_length=100, db_index=True)

新模型实际上是这样的:
class Company(models.Model):
my_new_name = models.CharField(max_length=100, db_index=True)

我跑了:

python manage.py makemigrations my_app

迁移代码是这样的:
class Migration(migrations.Migration):

dependencies = [
('my_app', '0004_auto_20160605_1852'),
]

operations = [
migrations.RenameField(
model_name='company',
old_name='my_old_name',
new_name='my_new_name',
),
]

然后我执行了:
python manage.py migrate

该网站运行良好。所有页面都会显示出来,并根据需要使用“new_name”。但是,我无法使用管理站点来管理数据库。它抛出错误:
Error during template rendering

In template /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/s... error at line 91

'Company' object has no attribute 'my_old_name'

我来这已经有一段时间了,没有运气。任何帮助,将不胜感激。

作为第一个建议的附录,这是admin.py的内容:
from django.contrib import admin
from .models import Company, Parameters

admin.site.register(Company)
admin.site.register(Parameters)

它不包含“my_old_name” ...

最佳答案

OK,发现错误。类模型定义还包含以下代码:

def __str__(self):
return self.my_old_name

更改为:
def __str__(self):
return self.my_new_name

解决了问题。我错过了这段告诉管理员要显示什么的代码。 (该模型比我发布的摘录更加复杂,包含了几十行。)

关于Django管理员在字段名称更改后给出错误 "'模型的对象没有属性 'field_name'“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37647346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com