当前位置: 首页 > 知识库问答 >
问题:

Django:ValueError无法分配“1”:“Vehicle.driver_id”必须是“driver”实例,但如何在json中传递objrct?

宗政博
2023-03-14

型号:

class Vehicle(models.Model):
    driver_id = models.ForeignKey(Driver, related_name='vehicles', on_delete=models.PROTECT)

序列化程序:

class VehicleSerializer(serializers.Serializer):
    driver_id = serializers.IntegerField()

    def create(self, validated_data):
        return Vehicle.objects.create(**validated_data)

JSON请求:

{
  "vehicle":
  {
    "driver_id": 1
  }
}

给出一条错误消息:

ValueError: Cannot assign "1": "Vehicle.driver_id" must be a "Driver" instance

当我提交这个请求时,它会抛出这个错误。那么如何在JSON请求中传递驱动程序ID呢?

共有1个答案

贺季同
2023-03-14

你可以做这样的事,

def create(self, validated_data):
        validated_data['driver_id'] = Driver.objects.get(id=validated_data['driver_id'])
        return Vehicle.objects.create(**validated_data)
 类似资料:
  • 我在django rest auth中使用自定义寄存器序列化程序来添加注册时的新字段。 我在用户模型中有一个国家/地区模型和一个国家/地区字段,它是国家/地区的FK。 user.models user.serializers 自定义寄存器序列化器 以国家/地区为对象从客户端发送的示例数据 {用户名:“伯尼”,电子邮件:bernie@d.com,国家:{…},密码1:“密码”,密码2:“密码”} 但

  • 传递给Illumate\Auth\EloquentUserProvider的参数1::validateCreentials()必须是Illumate\合同\Auth\身份验证的实例,应用程序\模型\用户给定的实例,在D:\xampp\htdocs\后端\电子商务\供应商\laravel\框架\src\Illumate\Auth\SessionG中uard.php第384行----我有这个问题请帮我

  • 我一直在尝试创建一个django项目,该项目拥有用户,并且这些用户可以添加他们创建的书籍的标题。但每次我输入书名(不在管理页面上)时,我都会出现这个错误 models.py

  • 我使用的是Laravel5.2。 我在表中添加了一个名为的新字段,并将其包含在视图和 我还做了一个检查,看看用户是否将使用一个保留的slug作为他的用户名,如果是,我抛出一个错误,如果用户名是好的,我保存在数据库中。 我正在检查2个保留的段塞和-这就是我保留的全部。 如果我取消检查,数据将正常保存在数据库中,包括保留的slug。所以我必须做检查。 然而,当我应用检查时,我得到了这个错误 Sessi

  • 我在运行django代码时遇到以下错误。我是一个绝对的初学者,我遵循一个教程来创建一个crud应用程序。 在我的html表单中键入信息时,我得到以下错误 ValueError:无法分配django。contrib。auth。模型。0x00000288775D3EF0处的匿名用户对象:“Note.user”必须是“user”实例 从。派克 views.py forms.py 创造html

  • 从django分配用户对象的正确方法是什么。contrib。auth。模型视图中的模型对象是否具有对用户的外键引用?新联系人示例如下: “new_contact.user=request.user”在/无法分配“”时抛出错误值error:“contact.user”必须是“user”实例,因为请求。用户是一个对象包装器,而不是实际用户(它还不存在)。但如果我建立新的联系。user=auth。get