我正在使用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/