簡體   English   中英

Django REST Framework,當序列化器深度= 1時,限制外鍵關系字段

[英]Django REST Framework, limiting fields on foreignkey relationship when serializer depth = 1

我正在使用Django REST Framework,並且具有如下序列化器:

class UserProfileSerializer(serializers.ModelSerializer):   
    class Meta:
        model = UserProfile
        depth = 1
        fields = ['user','team','correct','wrong','percentage']

如果傳遞所有user數據(包括哈希密碼),則會出現問題。 如何限制要傳遞的字段?

我有一個如下的UserSerializer(它擁有我真正想要的唯一字段):

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['first_name','last_name','username']

代替depth選項,在UserProfileSerializer顯式聲明user字段,並將UserSerializer用於此字段:

class UserProfileSerializer(serializers.ModelSerializer):   
    user = UserSerializer()
    class Meta:
        model = UserProfile
        fields = ['user','team','correct','wrong','percentage']

或者嘗試像這樣覆蓋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) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM