【发布时间】:2018-09-19 20:47:20
【问题描述】:
我有一个 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) 尽管一开始显然不存在,但为什么要这样做?
【问题讨论】:
-
您的数据库中是否已有该字段?你检查了吗
-
应该有,但是当我运行 \d posts_post 查看表中有哪些字段时,它没有显示。虽然实际上 - 有一个 category_id 字段 - 是这样吗?那是因为它是外键而不是实际的普通字段吗?
-
如果你看到
category_id,那么它是FK映射字段。您看不到与您提供的名称相同的外键。后缀为_id -
非常感谢 :-)
标签: django postgresql django-models psql django-migrations