제목이 어리석게 들리지만 저는 User
인스턴스의 Group
개체에 대한 참조를 변경할 수 있기를 원합니다. 그러나 나는 그들이 새로운 그룹을 만들거나 기존 그룹을 편집 할 수 없도록하고 싶다. 내가 원하는 것은 읽기 전용 중첩 필드입니다. 그러나 read_only=True
으로 설정하면 serializer에서 데이터의 유효성을 검사하지 않습니다. read_only=False
으로 설정하면 참조를 변경하는 대신 새로운 Group
을 생성하려고 시도합니다.DRF의 읽기 전용 중첩 필드 수정
class GroupSerializer(serializers.ModelSerializer):
permissions = PermissionSerializer(many=True)
class Meta:
model = Group
fields = (
'pk',
'name',
'permissions',
)
class UserSerializer(serializers.ModelSerializer):
groups = GroupSerializer(many=True)
....
class Meta:
model = User
exclude = (
....
)
def update(self, instance, validated_data):
print(validated_data)
return instance
def validate_groups(self, value):
print("validating groups")
....
return value
read_only=True
과 전혀 관련이 없습니다. 사용자가 내 PATCH
요청을 받지만 사용자는 정확히 동일합니다. read_only=False
으로 나는 또한 GroupSerializer
에하지만 변화와 create
및 update
방법을 재정의하는 시도 {'groups': [{'name': ['group with this name already exists.']}]}
유효성 검사 오류가 나에게 돌아 얻는다.
최대로 데이터의 그룹이 존재하는지 확인하기 위해 GroupSerializer
을 입력해야합니다.
이것은 http://stackoverflow.com/questions/38438167/unique-validation-on-nested-serializer-on-django-rest-framework/과 동일합니다. – Linovia