【发布时间】:2022-01-22 16:00:20
【问题描述】:
我有一个像这样的可写嵌套序列化器 -
class AddressSerializer(serializers.ModelSerializer):
class Meta:
model = publicAddress
fields = "__all__"
class customerSerializer(serializers.ModelSerializer):
publicAdd = AddressSerializer(many=True)
class Meta:
model = customerMaster
fields = ['id','publicAdd']
def create(self, validated_data):
Address = validated_data.pop('publicAdd')
customer = customerMaster.objects.create(**validated_data)
for addres in Address:
publicAddress.objects.create(customer=customer, **addres)
return customer
这一切正常,直到我应用验证,例如
class AddressSerializer(serializers.ModelSerializer):
class Meta:
model = publicAddress
fields = "__all__"
validators = [
UniqueTogetherValidator(
queryset=publicAddress.objects.all(),
fields=['customer', 'someValue']
)
]
定义
read_only_fields = ('customer',)
在 AddressSerializer 中也无济于事。
现在它会抛出一个错误,例如 cust 字段始终是必需的,并通过 api 发送 cust 值。
关于如何验证这一点没有错误的任何帮助?
【问题讨论】:
-
UniqueTogetherValidation 类总是强加一个隐式约束,它所应用的所有字段总是按要求处理。具有默认值的字段是一个例外,因为即使在用户输入中省略时,它们也始终提供一个值。 (已复制)coderedirect.com/questions/625774/…
标签: django django-rest-framework