【问题标题】:Django REST - saving and serializers in case of foreign fieldsDjango REST - 在外部字段的情况下保存和序列化程序
【发布时间】:2017-02-23 13:16:39
【问题描述】:

我认为这个问题会被重复,但我在 Django 序列化程序上搜索和阅读 the doc 时迷失了方向。而且我仍然未能实现最简单的目标,即保存与通过一对多关系相关的模型对应的序列化对象。

这是模拟代码:

模型:

class ParentModel(models.Model)
    # Some fields

class ChildModel(models.Model)
    parent = models.ForeignKey(ParentModel, models.DO_NOTHING)

序列化器:

class ParentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Message
        fields = ('__all__')

基本上,我无法弄清楚两件事:

  1. 如何定义子序列化程序以反映其与父级的关系
  2. 如何实现相应的后请求:

类视图:

class ChildList(APIView):
    def post(self, request):
        parent_serializer = ParentSerializer(data = request.data)
        if parent_serializer.is_valid():
           # how do I tell the child serializer to use parent serializer and save?

【问题讨论】:

    标签: django django-rest-framework django-serializer


    【解决方案1】:

    您需要为ParentModel声明单独的序列化程序

    例如

    class ParentModelSerializer(ModelSerializer):
        class Meta:
            model = ParentModel
    
    
    class ChildModelSerializer(ModelSerializer):
        parent = ParentModelSerializer()        
    
        class Meta:
            model = ChildModel
    

    然后,您必须自己处理 ChildModelSerilizer 的创建和更新:http://www.django-rest-framework.org/api-guide/serializers/#writable-nested-representations

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2021-06-22
      • 2016-04-10
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多