Django:将实例保存到ForeignKey字段时的ValueError

时间:2017-02-07 04:12:45

标签: python django django-models

我正在尝试保存模型的实例但是获得了ValueError。

ValueError: Cannot assign "<DataPointModel: DataPointModel object>": 
"Bike.data_point" must be a "DataPointModel" instance.

该模型有一个非常简单的领域:

data_point = models.ForeignKey(DataPointModel, null=True, blank=True)

方法也是如此。

data_point = DataPointModel.objects.filter(
    object_id=bike.reference_model.id,
).last()
watch.data_point = data_point
watch.save()

为什么不能保存?

1 个答案:

答案 0 :(得分:2)

每当您更新或创建表中包含外键的任何内容时,您需要传递主键的对象而不是传递实际值。因此,您必须将get查询调用到主键值表,然后传递obj将外键列作为值。

示例: -

假设我有两个模型如下: -

class model1(models.Model):
    name=models.CharField(primary_key=True,,max_length=2000)
    className=models.CharField(max_length=2000,null=True)

class model2(models.Model):
    name=models.ForeignKey(model1)
    teacher=models.CharField(max_length=2000,null=True)

views.py:-

jimmy = model2.objects.get(name="Jimmy")
obj = model1.objects.get(name='Piyush')
model2.objects.filter(id=jimmy.id).update(teacher=obj)