def test_build_serializer_with_depth(self):
class VehicleSerializer(ModelSerializer):
class Meta:
model = Vehicle
session = session
fields = '__all__'
depth = 3
serializer = VehicleSerializer()
self.assertEqual(len(serializer.fields), 11)
self.assertEqual(
set(serializer.fields.keys()), {
Vehicle.created_at.key, Vehicle.engine.key, Vehicle.id.key, Vehicle.name.key, Vehicle.options.key,
Vehicle.other.key, Vehicle.owner.key, Vehicle.paint.key, Vehicle.type.key, Vehicle.is_used.key, 'url'
}
)
engine_serializer = serializer.fields['engine']
self.assertEqual(len(engine_serializer.fields), 4)
self.assertEqual(set(engine_serializer.fields.keys()), {'type_', 'displacement', 'fuel_type', 'cylinders'})
owner_serializer = serializer.fields['owner']
self.assertEqual(len(owner_serializer.fields), 3)
self.assertEqual(set(owner_serializer.fields.keys()), {'id', 'first_name', 'last_name'})
self.assertEqual(set(f.label for f in owner_serializer.fields.values()), {'Id', 'First name', 'Last name'})
options_serializer = serializer.fields['options']
self.assertTrue(options_serializer.many)
self.assertIsInstance(options_serializer, ListSerializer)
option_serializer = options_serializer.child
self.assertEqual(len(option_serializer.fields), 2)
self.assertEqual(set(option_serializer.fields.keys()), {'id', 'name'})
评论列表
文章目录