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

Django migrations - AddField is actually removing it

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

\d posts_post

外键字段:

"Category" ( 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)
            ),
           ]

然而,当我 运行 迁移命令时,它实际上删除了该字段。

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

b) 尽管一开始显然不存在,但为什么要这样做?

如果看到category_id,那就是外键映射字段。您看不到与您在 models.py 中提供的名称相同的外键。它将在数据库级别以 _id 为后缀。

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

中提供的字段名称