2017-11-12 2 views
1

モデルオブジェクト(その名前は「RSS」)はビューのpost()に保存されません。モデルインスタンス「rss」を保存するにはどうしたらいいですか?ビューの投稿()?シリアライザクラスでDjangoでシリアライザを保存する

:Viewクラスで

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) 

答えて

0

あなたの現在のcreate方法は、新しいRSSオブジェクトをインスタンス化し、それを保存しません。あなたのオブジェクトのインスタンスを使用して、またこれらのメソッドはオブジェクトをデータベースに保存していることを確認したいと思うDjangoのモデルに対応する場合Django rest framework: override create() in ModelSerializer passing an extra parameter

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

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

詳細情報:これを試してみてください。

+0

シリアライザ内に保存することをお勧めしますか? – kambi

+0

はい、私の編集を参照してください – souldeux

関連する問題