def test_deserialize(self):
pk = Car.objects.latest("id").id + 1
json_car = json.dumps([{"model": "readonly_app.car",
"pk": pk,
"fields": {"wheel_number": 12,
"manufacturer": "Volvo"}}])
# Check that the save works
with self.assertSQLQueries(Car) as capture:
deserialized = serializers.deserialize("json", json_car)
car, = deserialized
car.save()
# Because a pk is specified, Django will try to do an UPDATE and then
# an INSERT when the UPDATE returns with 0 rows affected
self.assertNumCommands(capture, command="UPDATE", count=1)
self.assertNumCommands(capture, command="INSERT", count=1)
car = Car.objects.get(pk=pk)
self.assertEqual(car.wheel_number, 12)
self.assertEqual(car.manufacturer, "Renault")
json_car = json_car.replace("12", "14")
# Check that the UPDATE works
with self.assertSQLQueries(Car) as capture:
deserialized = serializers.deserialize("json", json_car)
car, = deserialized
car.save()
self.assertNumCommands(capture, command="UPDATE", count=1)
self.assertNumCommands(capture, command="INSERT", count=0)
car = Car.objects.get(pk=pk)
self.assertEqual(car.wheel_number, 14)
self.assertEqual(car.manufacturer, "Renault")
评论列表
文章目录