Hen*_*ryM 1 django django-rest-framework
我正在使用 Django REST Framework,并且有一个序列化器,如下所示:
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
depth = 1
fields = ['user','team','correct','wrong','percentage']
Run Code Online (Sandbox Code Playgroud)
user如果这传递了所有数据(包括散列密码),则会出现问题。如何限制传递的字段?
我有一个 UserSerializer 如下(它包含我真正想要的唯一字段):
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['first_name','last_name','username']
Run Code Online (Sandbox Code Playgroud)
而不是depth选项显式声明user字段UserProfileSerializer并用于UserSerializer此字段:
class UserProfileSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = UserProfile
fields = ['user','team','correct','wrong','percentage']
Run Code Online (Sandbox Code Playgroud)
或者尝试build_nested_field像这样覆盖:
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
depth = 1
fields = ['user','team','correct','wrong','percentage']
def build_nested_field(self, field_name, relation_info, nested_depth):
if field_name == 'user':
field_class = UserSerializer
field_kwargs = get_nested_relation_kwargs(relation_info)
return field_class, field_kwargs
return super().build_nested_field(field_name, relation_info, nested_depth)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |