Django: ValueError Cannot assign "1": "Vehicle.driver_id" must be a "Driver" instance, but how i would pass objrct in json?

Viewed 76

Model:

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

Serializer:

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

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

JSON Request:

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

gives an error message:

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

And when I submit this request, it throws this error. Then how can I pass the driver id in the JSON request?

1 Answers

You can do something like this,

def create(self, validated_data):
        validated_data['driver_id'] = Driver.objects.get(id=validated_data['driver_id'])
        return Vehicle.objects.create(**validated_data)
Related