【发布时间】:2015-07-15 18:48:53
【问题描述】:
当我尝试填充数据时,我在 Django 1.7 中的两个模型之间遇到外键约束冲突。
第一个模型是Specialty,一个简单的名称占位符,看起来像这样:
class Specialty(MongoidModel):
name = models.CharField(max_length=100)
引用它的模型 Job 如下所示:
class Job(MongoidModel):
specialty = models.ForeignKey(
Specialty,
null=True,
blank=True
)
这两个都继承了 MongoidModel,它只是一个自定义模型,包含一个 id、一个 created_at 日期和一个 updated_at 日期,用于从原始 Mongo 数据库中移植数据。
Makemigrations 和 migrate 一样运行良好,但是当我实际尝试移植所有 Job 对象时,我立即收到此错误:
django.db.utils.IntegrityError: insert or update on table "jobs_job"
violates foreign key constraint "D76699ba021e613d02bad10e8fb41f69"
DETAIL: Key (specialty_id)=(None) is not present in table
"specializations_specialty".
查看导致崩溃的特定工作会发现它包含专业的无,因为许多工作没有专业。
据我了解,数据库正在尝试查找 ID 为 None 的特殊对象,但失败了。我认为这就是 ForeignKey 定义中的 blank=True 和 null=True 应该优雅地避免,不让它进入那种状态,只是让关联撒谎?
【问题讨论】:
标签: django mongodb postgresql migration