2016-01-26 10 views
7

Birincil anahtarım id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) olan bir modelim var. Bir PUT istek kaynağın son nokta /api/v1/resource/<id>.json gönderildiğindeDjango Rest Framework'de Oluşturma veya Güncelleştirme (PUT ile)

ben kaynağı zaten yoksa, verilen id ile yeni bir kaynak oluşturmak istiyoruz.

Not: Bir ModelSerializer

Bunu yapmanın en zarif yolu nedir ile ModelViewSet kullanıyorum?

cevap

6

I get_object() yöntemi geçersiz kılmasını bitti benim 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() 

Belki bunu yapmanın daha zarif bir yolu var?