姜戈。如何保存序列化和验证数据?
Django. How to save serialized and validated data?
我有一个 Car
模型,其中包含 name
、model
和 serial number
字段。其中 name
和 model
字段的组合必须是唯一的。
我正在使用来自 rest_framework
的 serializers.ModelSerializer
和验证器 UniqueTogetherValidator
。
validators = [
UniqueTogetherValidator(
queryset=models.Car.objects.all(),
fields=['name', 'model']
)
]
数据库已有条目{'name': 'one', 'model': '13', 'serial number': 99}
。
我要添加汽车列表:
data = [{'name': 'one', 'model': '13', 'serial number': 99}, {'name': 'two', 'model': '3', 'serial number ': 98}, {' name ':' three ',' model ':' 1 ',' serial number ': 949}]
为此我使用:
serializer = CarSerializer (data = data)
if serializer.is_valid ():
serializer.save ()
我明白 is_valid() 会 return false。
for item in data:
serializer = CarSerializer (data = item)
if serializer.is_valid ():
serializer.save ()
或者如果您不想进行大量查询:
valid_data = []
for item in data:
serializer = CarSerializer (data = item)
if serializer.is_valid():
valid_data.append(item)
valid_data_serializer = CarSerializer (data = valid_data)
if valid_data_serializer.is_valid ():
valid_data_serializer.save ()
我有一个 Car
模型,其中包含 name
、model
和 serial number
字段。其中 name
和 model
字段的组合必须是唯一的。
我正在使用来自 rest_framework
的 serializers.ModelSerializer
和验证器 UniqueTogetherValidator
。
validators = [
UniqueTogetherValidator(
queryset=models.Car.objects.all(),
fields=['name', 'model']
)
]
数据库已有条目{'name': 'one', 'model': '13', 'serial number': 99}
。
我要添加汽车列表:
data = [{'name': 'one', 'model': '13', 'serial number': 99}, {'name': 'two', 'model': '3', 'serial number ': 98}, {' name ':' three ',' model ':' 1 ',' serial number ': 949}]
为此我使用:
serializer = CarSerializer (data = data)
if serializer.is_valid ():
serializer.save ()
我明白 is_valid() 会 return false。
for item in data:
serializer = CarSerializer (data = item)
if serializer.is_valid ():
serializer.save ()
或者如果您不想进行大量查询:
valid_data = []
for item in data:
serializer = CarSerializer (data = item)
if serializer.is_valid():
valid_data.append(item)
valid_data_serializer = CarSerializer (data = valid_data)
if valid_data_serializer.is_valid ():
valid_data_serializer.save ()