gpt4 book ai didi

python - 如何修复表 x 没有名为 y 的列?

转载 作者:行者123 更新时间:2023-11-28 20:26:49 29 4
gpt4 key购买 nike

我在 Django 中编辑了一个模型,结果出现错误:“表 reserve_time 没有名为 reservation 的列”对于以下模型:

from django.db import models
import datetime

class Club(models.Model):
establishment = models.CharField(max_length=200)
address = models.CharField(max_length=200)
def __unicode__(self):
return self.establishment

class Day(models.Model):
club = models.ForeignKey(Club)
day = models.DateField('day')
def __unicode__(self):
return unicode(self.day)

class Court(models.Model):
club = models.ForeignKey(Club)
day = models.ForeignKey(Day)
court = models.IntegerField(max_length=200)
def __unicode__(self):
return unicode(self.court)

class Time(models.Model):
club = models.ForeignKey(Club)
day = models.ForeignKey(Day)
court = models.ForeignKey(Court)
time = models.TimeField('time')
reservation = models.CharField(max_length=200)
def __unicode__(self):
return unicode(self.time)

之后我运行了 python manage.py syncdb 和 python manage.py runserver ,但仍然出现上述错误。有想法该怎么解决这个吗?如果我删除“预订”字段,它就可以正常工作。在管理员中,出现了“预订”文本框,但当我尝试保存时出现错误。

最佳答案

这里的问题是,当您更改字段时,django 不会做任何事情来修复您的表。 syncdb 所做的只是创建尚不存在的表。如果您决定更改架构并添加字段,则需要在数据库中手动创建它们,或者删除表并让 syncdb 重新创建它,或者开始使用像 South 这样的项目。处理数据库迁移。

这行不通的原因是因为理论上您已经在表中有了现有的记录,并且没有确定的方法可以知道您对所有这些缺失的字段做了什么。也许这些字段不能为空。也许他们有其他必须满足的约束。显然南方可以处理这种情况。

更新(2019 年 12 月)

使用django已经7年多了,但是现在看来数据库迁移功能已经集成为一流的概念了: https://docs.djangoproject.com/en/3.0/topics/migrations/

关于python - 如何修复表 x 没有名为 y 的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10680192/

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