Tes*_*man 0 database django class django-models
我有一个简单的国家和城镇模型:
from django.db import models
class Country(models.Model):
name = models.CharField(max_length=50)
class Town(models.Model):
belongs_to = models.ForeignKey(country, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)
现在,我想稍微玩一下...,我想补充大陆。我想从一开始的正确方法就是这样做:
from django.db import models
class Continent(models.Model):
name = models.CharField(max_length=50)
class Country(models.Model):
belongs_to = models.ForeignKey(continent, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
class Cown(models.Model):
belongs_to = models.ForeignKey(country, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)
如果我这样做并保存文件,则在admin.py中将大洲添加到admin.site.register(continent),从makemigrations开始...我得到了:
您正在尝试将不属于国家的不可为空的字段添加到国家/地区,而没有默认设置;我们无法做到这一点(数据库需要某种方式来填充现有行)。请选择一个修复程序:
1.)现在提供一个一次性默认值(将在所有现有行上设置此列的空值)2.)退出,然后让我在models.py中添加默认值
我被困在这里,因为我不知道从这里做什么?
我认为您收到的信息很容易解释。
您正在将belongs_to字段添加到country模型中(类应该以首字母大写命名,Country尽管如此),但是它被声明为不可为空。也就是说,必须声明一个值。
现在,由于您已经country填充了模型的某些行(对象),因此Django会询问您belongs_to应将哪些值添加到这些现有行中。
有两种解决方案:
id的的continent模型),以所有这些,以后更改它,或belongs_to = models.ForeignKey(continent, on_delete=models.CASCADE, null=True, blank=True)以便migrate此字段后可以为空,因此现有行的该字段为null。希望你能理解。
| 归档时间: |
|
| 查看次数: |
1322 次 |
| 最近记录: |