2017-04-26 39 views
0

我正在使用Django和其他框架,我無法更新從PATCH方法的數據(字段)。如果我點擊,每次它創建新的記錄。 請找到下面的代碼;從郵遞員django修補方法來編輯或更新用戶字段

數據:方法 - PATCH

{ 
    "company_id": 2, 
    "company_code": "PR", 
    "company_name": "Padise", 
    "company_description": "company", 
    "company_address": "company", 
    "active": true, 
    "updated_by": null, 
    "updated_dtm": "2017-04-26T12:12:20Z" 
} 

上述數據「COMPANY_ID」是主鍵,我需要修改或更新與該主鍵記錄。 在PATCH方法中,我需要傳遞主鍵進行編輯或更新記錄。

views.py

class getCompanyDetails(APIView): 
    def get(self, request): 
     comp = company.objects.filter(active = True) 
     serializer = restGetCompanySerializer(comp, many=True) 
     return JsonResponse({"allCompanies":serializer.data}) 

    def patch(self, request): 
     serializer = restAddCompanySerializer(data=request.data, partial=True) 
     if serializer.is_valid(): 
      serializer.save() 
      return JsonResponse(serializer.data) 
     return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

serializer.py

class restAddCompanySerializer(serializers.ModelSerializer): 
    class Meta: 
     model = company 
     fields = '__all__' 

回答

0

你必須提供一個模型實例進行更新。嘗試是這樣的:

class getCompanyDetails(APIView): 
    def get(self, request): 
     comp = company.objects.filter(active = True) 
     serializer = restGetCompanySerializer(comp, many=True) 
     return JsonResponse({"allCompanies":serializer.data}) 

    def patch(self, request): 
     # fetching company with given company_id 
     company = company.objects.get(pk=request.data['company_id']) 
     # passing company as first argument. This will invoke 
     # ModelSerializer's 'update' method instead of 'create' method. 
     serializer = restAddCompanySerializer(company, data=request.data, partial=True) 
     if serializer.is_valid(): 
      serializer.save() 
      return JsonResponse(serializer.data) 
     return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 
+0

嗨感謝您的help.Its工作fine.But updated_dtm不會從models'updated_dtm = models.DateTimeField之日起,時間(空=真,默認= datetime.now)'其不更新數據庫中的字段。如何解決這個問題? – user1335606

+0

我不明白你的擔心。如果每次更新實例時想更新'update_dtm',只需將models.py編輯爲:'updated_dtm = models.DateTimeField(null = True,auto_now_add = True)'。 – akhilsp

+0

@ user1335606這是否解決您的問題?如果它有幫助,請upvote :) – akhilsp

相關問題