【问题标题】:Django MySQL How to stop foreign key constraint?Django MySQL 如何停止外键约束?
【发布时间】:2012-01-13 03:21:24
【问题描述】:

我有一个这样的模型:

from django.db import models

class House(models.Model):
    address = models.CharField(max_length=200)
    price = models.CharField(max_length=200)

class Inhabitant(models.Model):
    home = models.ForeignKey(House, blank=True, null=True, on_delete=models.SET_NULL)
    name = models.CharField(max_length=200)
    age = models.IntegerField()

但是在运行python manage.py sql my_test_app 时,我最后得到了这个:

ALTER TABLE `my_test_app_inhabitant`
ADD CONSTRAINT `house_id_refs_id_7cd928c7`
FOREIGN KEY (`home_id`)
REFERENCES `my_test_app_house` (`id`);

这意味着我无法添加没有房屋的居民 - 我该如何解决这个问题?

【问题讨论】:

  • 你在家里自己定义 - models.ForeignKey(...) :)

标签: python mysql django django-models


【解决方案1】:

外键并不意味着你不能添加没有房子的居民。

约束说:'如果 Inhabitant.house 包含一个值,那么这个值必须出现在 House 模型中'。

要验证数据库是否允许没有房屋的居民,您应该检查房屋字段 inhabitant 表是否允许 NULL 值。

【讨论】:

    猜你喜欢
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2011-01-01
    相关资源
    最近更新 更多