【问题标题】:Saving a Serializer in Django在 Django 中保存序列化程序
【发布时间】:2018-04-25 07:09:12
【问题描述】:

当我试图在视图的 post() 中保存模型对象(这里的名称是“RSS”)时,它没有被保存,如何从视图的 post() 中保存模型实例“rss” ?

在序列化器类中:

class RSSSerializer(serializers.ModelSerializer):
    class Meta:
        model = RSS
        fields = ('feed_url', 'website_url', 'description', 'title')

    def create(self, validated_data):
        rss = RSS(**validated_data)
        rss.created_at =  datetime.now()
        rss.last_scan_time = '2001-01-01 00:00:00'
        rss.id = None
        return rss

在视图类中:

class RSSList(APIView):
        def post(self, request):
                serializer = RSSSerializer(data=request.data)
                if serializer.is_valid():
                        print("saving rss post")
                        serializer.save()
                        return Response(serializer.data, status=status.HTTP_201_CREATED)
                return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

【问题讨论】:

    标签: python django orm model


    【解决方案1】:

    您当前的create 方法实例化了一个新的RSS 对象,但不保存它。试试这个:

    def create(self, validated_data):
        rss = RSS.objects.create(**validated_data)
        rss.created_at = datetime.now()
        ...
        return rss.save()
    

    更多信息:Django rest framework: override create() in ModelSerializer passing an extra parameter

    http://www.django-rest-framework.org/api-guide/serializers/#saving-instances

    如果您的对象实例对应于 Django 模型,您还需要确保这些方法将对象保存到数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-23
      • 2022-01-18
      • 2023-03-17
      • 2021-04-09
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多