2016-01-26 12 views
7

में एक बनाएं या अपडेट करें (PUT के साथ) मेरे पास एक मॉडल है जिसमें प्राथमिक कुंजी id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) है।Django Rest Framework

एक PUT अनुरोध संसाधन के अंत बिंदु /api/v1/resource/<id>.json को भेजा जाता है जब मैं आपूर्ति id के साथ एक नया संसाधन बनाने के लिए करता है, तो संसाधन पहले से मौजूद नहीं चाहते हैं।

नोट: मैं एक 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() 

शायद वहाँ ऐसा करने का एक और अधिक सुरुचिपूर्ण तरीका है?