我正在使用Django开发网络应用。我已经在MySQL数据库中创建了表,然后使用inspectdb生成了models.py。我能够获取详细信息并毫无问题地连接到数据库。但是在将值保存到特定表时,显示以下错误

sav_list = List(id=4, item_name ='name1', item_desc='desc1', location='location', reason='rfp',  pid=3)


无法分配“ 3”:“ List.id”必须是“ Order”实例。

我的模特

class List(models.Model):
    id = models.IntegerField(db_column='ID', primary_key=True)  # Field name made lowercase.
    item_name = models.CharField(db_column='Item_Name', max_length=255)  # Field name made lowercase.
    item_desc = models.CharField(db_column='Item_Desc', max_length=300)  # Field name made lowercase.
    location = models.CharField(db_column='Location', max_length=100, blank=True, null=True)  # Field name made lowercase.
    reason = models.CharField(db_column='Reason', max_length=100, blank=True, null=True)  # Field name made lowercase.
    pid = models.ForeignKey('Order', models.DO_NOTHING, db_column='PID')  # Field name made lowercase.

class Order(models.Model):
    poid = models.IntegerField(db_column='POID', primary_key=True)  # Field name made lowercase.
    po = models.CharField(db_column='PO', unique=True, max_length=20)  # Field name made lowercase.
    quote = models.CharField(db_column='Quote', unique=True, max_length=20)  # Field name made lowercase.
    condition = models.CharField(db_column='Condition', max_length=15)  # Field name made lowercase.


我曾尝试为外键使用related_name,但仍具有相同的行为。相同的值可以存储在数据库中,而不会出现任何问题。只有Django会引发错误。

请有人帮我!!!

最佳答案

您应该粘贴实际错误;假定“ List.pid”必须是“ Order”实例。

该错误应清除。 pid是ForeignKey字段,它需要相关模型的实例。您可以获取并设置项目:

pid = Order.objects.get(pk=3)
List(...., pid=pid)


或使用基础ID字段:

List(...., pid_id=3)

关于python - django外键无法分配必须是实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51380780/

10-16 10:49