【发布时间】:2019-06-03 19:44:30
【问题描述】:
我为 MySQL 创建模型的外键 约束总是返回错误
型号是
class AirPort(models.Model):
code = models.CharField(max_length=3)
city = models.CharField(max_length=100)
def __str__(self):
return f"{self.id} - CODE =>{self.code} :: CITY=> {self.city}"
class Flight(models.Model):
orgin_id = models.ForeignKey(AirPort,on_delete=models.CASCADE,related_name="dep")
dest_id = models.ForeignKey(AirPort,on_delete=models.CASCADE,related_name="arrival")
duration = models.IntegerField()
def __str__(self):
return f"{self.id} - {self.orgin} TO {self.dest} will take {self.duration} minutes"
shell 输出是
a=航班(orgin_id=1,dest_id=2,duration=120) 回溯(最近一次通话最后): 文件“”,第 1 行,在 init 中的文件“/home/kid/PycharmProjects/hardward/venv/lib/python3.6/site-packages/django/db/models/base.py”,第 467 行 _setattr(self, field.name, rel_obj) set 中的文件“/home/kid/PycharmProjects/hardward/venv/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py”,第 210 行 self.field.remote_field.model._meta.object_name, ValueError:无法分配“1”:“Flight.orgin_id”必须是“AirPort”实例。
【问题讨论】:
-
添加您的插入查询集
-
不要叫你的 FK
origin_id,叫它origin。然后你可以使用origin_id通过PK而不是实例来分配。