我想了解我错过了什么。
我之前的模型:
class sectorToMapXY(models.Model):
pos = models.IntegerField()
name = models.CharField(max_length=15)
mapX = models.FloatField(default=0)
mapY = models.FloatField(default=0)
destMap = models.ForeignKey(Document, related_name='%(class)s_docfile')
更改后的模型(更新了destMap中的on_delete删除):
class sectorToMapXY(models.Model):
pos = models.IntegerField()
name = models.CharField(max_length=15)
mapX = models.FloatField(default=0)
mapY = models.FloatField(default=0)
destMap = models.ForeignKey(Document, related_name='%(class)s_docfile',on_delete=models.SET(-1))
运行python manage.py makemigrations
时,它会返回No changes detected
。
将on_delete
更改为SET_NULL
或SET_DEFAULT
时,它会检测到更改。
更新
我还没有设置SET_NULL或SET_DEFAULT,因此在尝试运行时会返回错误(但它会检测到更改):
SystemCheckError: System check identified some issues:
ERRORS:
dashboard.sectorToMapXY.destMap: (fields.E321) Field specifies on_delete=SET_DEFAULT, but has no default value.
HINT: Set a default value, or change the on_delete rule.
添加models.ForeignKey(Document, related_name='%(class)s_docfile',null=True,on_delete=models.SET_NULL)
时
正在运行python manage.py makemigrations
会返回No changes detected
。
答案 0 :(得分:0)
我无法在django 1.8
上重现您的错误。
但是,我不确定在设置makemigrations
或on_delete=SET_NULL
时on_delete=SET_DEFAULT
命令是如何成功运行的,因为您遗漏了null=True
或default=default_value
在字段定义。
如果这是您第一次在应用上处理migrations
,则应该运行:
$ python manage.py makemigrations your_app_label
按照规定here。