Raf*_*oly 6 python django django-rest-framework
如何使用不在请求负载上的密钥验证唯一约束?
我需要验证的密钥是user_id,sku但请求不包含user_id密钥。
有效负载示例:
{'sku': '123', data: []}
Run Code Online (Sandbox Code Playgroud)
序列化器:
class ProductConfiguration(serializers.Serializer):
min_quantity = serializers.IntegerField(required=True)
price = serializers.DecimalField(
required=True,
decimal_places=2,
max_digits=10,
coerce_to_string=False
)
class ProductSerializer(serializers.ModelSerializer):
sku = serializers.CharField(required=True)
data = ProductConfiguration(many=True, required=True)
class Meta:
model = WholeSale
# the "id" and "user_id" columns should not be included on the response
exclude = ['id', 'user']
Run Code Online (Sandbox Code Playgroud)
我需要验证user和sku密钥已经存在。
默认情况下,如果两个密钥user_id和sku位于有效负载上drf可以处理Unique错误,如果其中一个密钥不在有效负载上,我如何验证这两个密钥?
您可以从请求中获取用户数据
请求.用户
也许将它从视图传递给序列化器
data = request.data
data['user_id'] = request.user.pk
serializer = ProductSerializer(data)
Run Code Online (Sandbox Code Playgroud)
在序列化器中你可以做
def validate(self, data):
user = data.get('user_id')
sku = data.get('sku')
record = WholeSale.objects.filter(user=user, sku=sku).first()
if not record:
raise serializers.ValidationError("This combo doesn't exist")
return super().validate(data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9389 次 |
| 最近记录: |