在使用django 1.11
的{{1}}应用中,我有3个应用,其中一个我有'国家/地区'模式:
mysql
我尝试class Country(models.Model):
countryId = models.AutoField(primary_key=True, db_column='country_id')
name = models.CharField(max_length=100)
code = models.CharField(max_length=3)
class Meta:
db_table = 'country'
我遇到了这个错误:
makemigrations
如果我使用django.db.utils.ProgrammingError: (1146, "Table 'dbname.country' doesn't exist")
为另一个与此模型及其数据库表无关的应用程序进行迁移,我仍然会收到此错误。
答案 0 :(得分:2)
回顾一下,如果您有任何依赖关系,可能同一个模型需要同一个应用程序或其他应用程序中的模型国家/地区:
class OtherModel(models.Model):
country = models.ForeignKey(Country)
1.-如果为True,则需要检查settings.py中的installed_apps是否具有正确的应用顺序,如果属于同一个应用,则需要首先声明国家/地区应用,然后再声明家属。
2.-如果依赖在同一个app中,则需要在models.py中的Country模型之后声明依赖模型。
3.-检查控制台上的错误跟踪是否在models.py或forms.py
上讨论相同的错误4.-检查执行makemigrations和migrate是否正确的应用顺序:python manage.py makemirgations app_of_country,other_app_name
答案 1 :(得分:0)
不知何故,Django认为你已经创建了这个表,现在正在尝试修改它,而实际上你已经从外部删除了表并重新开始。如果是这种情况,请删除属于您的应用的migrations
个文件夹中的所有文件,然后使用./manage.py makemigrations
重新开始。
答案 2 :(得分:0)
我遇到了这个问题,这是因为我正在使用...刚刚删除的数据库在模型中的某个地方初始化默认值。简而言之,我遇到了类似forms.ChoiceField(choices=get_some_data(),...)
的情况,其中get_some_data()
使用数据库来检索一些默认值。
我希望您发布回溯记录,因为在我的情况下,通过查看回溯记录get_some_data()
正在使用orm(使用类似somemodel.objetcs.filter(...)
的东西)就很明显了。