django外键无法分配必须是实例

Sai*_*ath 2 python django foreign-keys

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

sav_list = List(id=4, item_name ='name1', item_desc='desc1', location='location', reason='rfp',  pid=3)
Run Code Online (Sandbox Code Playgroud)

无法分配“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.
Run Code Online (Sandbox Code Playgroud)

我已尝试使用关联名称作为外键,但行为仍然相同。相同的值可以毫无问题地存储在数据库中。只有 Django 会抛出错误。

请有人帮助我!

Dan*_*man 5

您应该粘贴实际的错误;据推测“List.pid 一定是一个“Order”实例。

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

pid = Order.objects.get(pk=3)
List(...., pid=pid)
Run Code Online (Sandbox Code Playgroud)

或使用底层 id 字段:

List(...., pid_id=3)
Run Code Online (Sandbox Code Playgroud)