2011-12-05 48 views
0

我有這樣一個模型:在運行時python manage.py sql my_test_appDjango MySQL如何停止外鍵約束?

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() 

但是我得到這個結尾:

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

這意味着沒有房子我不能添加的居民 - 我怎麼能解決這個問題?

+2

你自己在home中定義它 - models.ForeignKey(...):) – favoretti

回答

2

外鍵並不意味着你不能添加沒有房子的居民。

約束條件說:'如果Inhabitant.house包含一個值,那麼這個值必須出現在House模型中。

要驗證數據庫允許居民與你的房屋你應該檢查房屋現場居民表允許NULL值。