我在Django 2.0中有一个应用程序,作为数据库引擎,我使用MySQL。我有一个问题,因为数据库以前已经创建并且已经有记录,我的想法是将这个数据库用于我正在创建的应用程序。
使用命令
python manage.py inspectdb > models.py
创建models.py文件,该文件将按照生成的models.py文件的指示进行清理。
#This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Make sure each model has one field with primary_key=True
# * Make sure each ForeignKey has `on_delete` set to the desired behavior.
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
在此之后我继续执行:
python manage.py migrate
python manage.py makemigrations
python manage.py migrate
但它会产生以下错误:
(1050, "Table 'XXXXXXX' already exists")
显然它告诉我该表已经存在,但是如何不生成此错误并继续从Django管理表。
答案 0 :(得分:0)
其中一件事(以及我不使用Django的主要原因)是它喜欢控制一切。它控制数据库这一事实意味着,如果你不是严格地在Django中开始,那么你做错了。
然而,有一项工作:
https://docs.djangoproject.com/en/2.0/howto/legacy-databases/
答案 1 :(得分:0)
您需要运行--fake-initial
或--fake
。点击Django migrations了解更多信息。小心,因为运行inspectdb并不能解决所有问题。您需要手动修复models.py中的内容并再次迁移。