【问题标题】:How can i use same serializer in Create and List Views如何在创建和列表视图中使用相同的序列化程序
【发布时间】:2019-11-01 22:00:36
【问题描述】:

我有一个 PostSerializer,这个序列化器有一个用户字段。我也有一个 UserSerializer。所以我想像这样在 PostSerializer 中使用 UserSerializer

class PostSerializer(serializers.ModelSerializer):
    user = UserSerializer(many=False)
    class Meta:
         fields = ('user', 'title')

但是当我尝试在 CreateView 中使用时出现错误,因为我不发送 UserSerializer 数据,而是发送 user_id。

我必须在创建和列表视图中使用相同的序列化程序。因为我使用 ListCreateAPIView。

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    当我必须处理这种序列化时,我会这样做:

    class PostSerializer(serializers.ModelSerializer):
        user_data = UserSerializer(
            read_only=True,
            source='user',
        )
    
        class Meta:
            fields = (
                'user',
                'user_data',
                'title',
            )
    

    阅读时会得到user_data,写作时只需要用户ID为user

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 2015-03-11
      相关资源
      最近更新 更多