【问题标题】:How to solve django with mysql error in inserting如何解决django在插入时出现mysql错误
【发布时间】: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而不是实例来分配。

标签: python mysql django


【解决方案1】:

试试

a=Flight(orgin=AirPort.object.get(id=1),dest=AirPort.object.get(id=2),duration=120)

【讨论】:

  • 感谢它的工作,但我无法保存错误是 django.db.utils.OperationalError: (1054, "Unknown column 'orgin_id_id' in 'field list'") 此列是自动生成的我不知道原因请帮忙
  • 谢谢它的工作请解释我们是否需要运行 a=Flight(orgin=AirPort.object.get(id=1),dest=AirPort.object.get(id=2),duration =120) 此代码而不是 mysql 中用于外键约束的普通代码
【解决方案2】:

你可以试试这个

flight_result=Flight()
flight_result.orgin_id = AirPort.object.first()
flight_result.dest_id = AirPort.object.last()
flight_result.duration = 1000
flight_result.save()

【讨论】:

    【解决方案3】:

    您是否运行了 python manage.py makemigrations...并使用 python manage.py migrate 迁移了数据

    【讨论】:

    • yes django.db.utils.OperationalError: (1054, "Unknown column 'hello_flight.orgin_id_id' in 'field list'") 这是每次我进行迁移时都会出现的问题,它会添加像 orgin_id_id 和dest_id_id
    • 删除迁移文件夹中的所有迁移,然后再次进行迁移。
    【解决方案4】:

    我收到此错误是因为我没有看到末尾的逗号

    order.employee=Employee.objects.get(employee_id=x),
    

    它的起源是我之前使用了 Order.objects.create() ,其中一个使用逗号分隔的属性分配,我没有立即删除逗号。可以帮助那些在电脑前坐太久的人:)

    【讨论】:

      猜你喜欢
      • 2015-10-09
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多