将新字段添加到模型后的Django FieldError和AttributeError异常

时间:2013-07-18 01:55:07

标签: python django django-models

我正在编写一个多功能Web应用程序,数据模型有点不稳定。

我将课程Client定义为

class Client(models.Model):
    client = models.IntegerField(primary_key=True, db_column = "client_id")
    client_name = models.CharField(max_length=100L, unique = True)
    parentorg = models.ForeignKey("Parentorgs")
    demo_client = models.IntegerField()
    live_client = models.IntegerField(db_column = "live_client")

    class Meta:
        db_table = 'txn_client'

刚刚添加了最后一个字段live_client。这是一个fliter字段,用于区分活动和非活动Client对象。我只是在MySQL中添加ALTER TABLE语句来添加字段并将相关记录设置为1,而不是依赖于数据迁移。这在过去一直没有问题。

在我的视图方法中,我有

from app.models import Client

def index(request):
    client_list = Client.objects.filter(live_client = 1)

突然间,这是抛出一个FieldError,因为Django cannot resolve keyword 'live_client' into a field,并显示了一些替代关键字。

为了确保模型记录正在复制数据库表,我运行了

python manage.py inspectdb

Client中的models.py类复制了inspectdb打印输出。

为了进一步测试,我将索引方法更改为

def index(request):
client_list = Client.objects.all()

for c in client_list:
    print c.live_client

这又引发了一个描述'Client' object has no attribute 'live_client'

的AttributeError

现在,这与models.pypython manage.py inspectdb

的打印输出中定义的完全相矛盾

0 个答案:

没有答案