2016-01-26 10 views
7

私は主キーがid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)であるモデルを持っています。Django Rest Frameworkの作成または更新(PUT付き)

PUT要求は、私はリソースがすでに存在していない場合供給id新しいリソースを作成したいリソースのエンドポイント/api/v1/resource/<id>.jsonに送信されます。

注:私はこれを行うための最もエレガントな方法は何ModelSerializer

ModelViewSetを使用していますか?

答えて

6

は私がでget_object()メソッドをオーバーライドすることになった私のModelViewSet

class ResourceViewSet(viewsets.ModelViewSet): 
    """ 
    This endpoint provides `create`, `retrieve`, `update` and `destroy` actions. 
    """ 
    queryset = Resource.objects.all() 
    serializer_class = ResourceSerializer 

    def get_object(self): 
     if self.request.method == 'PUT': 
      resource = Resource.objects.filter(id=self.kwargs.get('pk')).first() 
      if resource: 
       return resource 
      else: 
       return Resource(id=self.kwargs.get('pk')) 
     else: 
      return super(ResourceViewSet, self).get_object() 

おそらく、これを行うための、よりエレガントな方法がありますか?

関連する問題