我正在尝试保存模型的实例但是获得了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()
为什么不能保存?
答案 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)