Django迁移 - AddField实际上是删除它

时间:2018-04-10 09:30:59

标签: django postgresql django-models psql django-migrations

我有一个django博客项目,最近对我的本地环境进行了更改,现在我手动迁移到我的生产服务器。我设法几乎完成了这个,但是在psql / postgres中我使用命令:

  

\ d posts_post

外键字段:

  

"分类" (models.ForeignKey(' Category',null = True,blank = True))

根据终端无处可见。我已经制作了另一个迁移文件:

from __future__ import unicode_literals
from django.db import migrations, models
import mptt.fields
import django.utils.timezone
import mptt
from django.db import migrations

class Migration(migrations.Migration):
    dependencies = [
        ('posts', '0016_remove_post_category'),
            ]
    operations = [
        migrations.AddField(
                model_name="Post",
                name = "Category",
                field =  models.ForeignKey('Category', null=True, blank=True)
            ),
           ]

但是,当我运行migrate命令时,它实际上删除了该字段。

a)为什么经理会删除我的字段而不是添加字段?

b)为什么这样做虽然显然根本不存在?

1 个答案:

答案 0 :(得分:1)

如果你看到category_id,那么就是它的FK映射字段。您无法看到外键与models.py中的外键相同。它将在数据库级别以_id为后缀。

但是当您使用django orm时,您将只使用您在models.py

中提供的字段名称