[英]Django DRF Unable to send PUT request with Image Field
我在 React 中有一個表單,我通過它發送一些包含 ImageField 的數據。 我能夠執行 POST 請求,並且數據已成功發送到 Django 后端。 但是,當我嘗試修改數據時,我得到了 employee_image: `
[“提交的數據不是文件。請檢查表單上的編碼類型。”]
這是 GET 請求中出現的數據:
[ { "id": 2, "product_name": "XYZ", "product_description": "XYZ", "product_price": "12.00", "product_unit_weight": "120.00", "product_unit_weight_units": "GM", "product_type ": "CPG", "product_image": "http://192.168.29.135:8000/media/product_images/xyz.png" },
這是我的 models.py 文件:
class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
def post(self, request, *args, **kwargs):
product_name = request.data['product_name']
product_description = request.data['product_description']
product_price = request.data['product_price']
product_unit_weight = request.data['product_unit_weight']
product_unit_weight_units = request.data['product_unit_weight_units']
product_type = request.data['product_type']
product_image = request.data['product_image']
Product.objects.create(product_name=product_name, product_description=product_description, product_price=product_price, product_unit_weight=product_unit_weight, product_unit_weight_units=product_unit_weight_units, product_type=product_type, product_image=product_image)
return Response({'message':'Product created successfully'}, status=200)
def update(self, request, *args, **kwargs):
print('Put method running')
pk = self.kwargs.get('pk')
product = get_object_or_404(Product.objects.all(), pk=pk)
print(product)
if (product.product_image.startswith('http')):
img_name = dataDict["product_image"].split("/")[-1]
product_img_temp = ContentFile(request.get(dataDict["product_image"]).content, name=img_name)
dataDict['product_img'] = product_img_temp
serializer = ProductSerializer(product, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我嘗試按照此響應並使用 update() 編輯我的 models.py,如上所示。 但我得到的錯誤是:
'產品' object 沒有屬性 '數據'
此外,當我在 update() 方法中打印產品時,我只打印了產品名稱,而不是字段的 rest。 我不明白為什么我會遇到這個問題。 任何幫助將非常感激。 提前致謝。
`
這是您必須克服的幾個問題。
print(product.__dict__)
。您可以使用“patch”方法來發出您的請求,而不是“put”請求。 補丁使用 partial_update() function 因此,您還需要定義一個 partial_update() function。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.