【发布时间】:2022-06-30 03:33:54
【问题描述】:
我目前正在尝试在验证 drf 序列化程序时检查特定字段是否只出现一次:
from rest_framework.validators import UniqueValidator, UniqueTogetherValidator
...
class LiberaStorageSerializer(serializers.ModelSerializer):
resource_name = serializers.CharField(required=True, write_only=True)
...
class Meta:
model = LiberaBackend
fields = ('id', 'resource_name'...)
validators = [
UniqueValidator(
queryset=LiberaBackend.objects.all(),
)
]
这样做会导致以下执行:
AttributeError: 'LiberaStorageSerializer' 对象没有属性 'source_attrs'
但是为什么呢?我只想检查是否已经存在具有相同 resource_name 的 LiberaBackend 对象
另一方面,如果这样使用 UniqueTogetherValidator:
validators = [
UniqueTogetherValidator(
queryset=LiberaBackend.objects.all(),
fields=['resource_name']
)
]
我一点问题都没有,验证器返回:
字段资源名称必须是唯一的集合。 如果我想创建一个具有相同 resource_name 值的对象
对我来说这似乎是错误的,这里应该使用 UniqueValidator,知道怎么做吗?
提前致谢。
【问题讨论】:
标签: python django-rest-framework