Файл не загружается django drf

я пытаюсь загрузить изображение из интерфейса реагирования с помощью drf, это ошибка, которую я получаю:

ValueError: Cannot assign "1": "ProjectImage.category" must be a "ProjectCategory" instance.

модели.py:

class ProjectCategory(MPTTModel):
     name = models.CharField(max_length = 100)
     slug = models.SlugField()
     parent = TreeForeignKey('self',blank=True, null=True, related_name='children', on_delete=models.CASCADE, db_index = True)


class MPTTMeta:
    verbose_name_plural = "Projectcategories"
    order_insertion_by = ['name']

    def __str__(self):  
        full_path = [self.name]
        k = self.parent
        while k is not None:
             full_path.append(k.name)
             k = k.parent
        return ' -> '.join(full_path[::-1])

class ProjectImage(models.Model):
      title = models.CharField(max_length = 100)
      image = models.ImageField(upload_to = 'media' , default = 'home/tboss/Desktop/image/logo.png')
      category = models.ForeignKey('ProjectCategory', null=True, blank=True, on_delete=models.CASCADE,)
      description = models.TextField(max_length=1000)

      def __str__(self):
          return self.title

просмотров.py:

class ProjectImageUploadView(APIView):
      authentication_classes = []
      permission_classes = []
     def post(self, request,category):
         file = request.data['file']
         data={
            'image':file,
            'category':category
         }

    ProjectImage.objects.create(**data)
    return JsonResponse(json.dumps({'message': "Uploaded"}), status=200, safe=False)

    def __str__(self):
        return self.title

URL.py:

path('projectuploadimage/<int:category>/', views.ProjectImageUploadView.as_view()),

я хочу загрузить несколько изображений один раз в категорию.......................................... .......


person afk    schedule 04.01.2020    source источник


Ответы (1)


Вы должны передать category_id модели ProjectImage, так как это целое число:

class ProjectImageUploadView(APIView):
     authentication_classes = []
     permission_classes = []
     def post(self, request,category):
         file = request.data['file']
         data={
            'image':file,
            'category_id':category
         }

    ProjectImage.objects.create(**data)
    return JsonResponse(json.dumps({'message': "Uploaded"}), status=200, safe=False)

    def __str__(self):
        return self.title

Кроме того, вы можете отправить соответствующую категорию:

class ProjectImageUploadView(APIView):
     authentication_classes = []
     permission_classes = []
     def post(self, request,category):
         file = request.data['file']
         data={
            'image':file,
            'category':ProjectCategory.objects.get(pk=category)
         }

    ProjectImage.objects.create(**data)
    return JsonResponse(json.dumps({'message': "Uploaded"}), status=200, safe=False)

    def __str__(self):
        return self.title
person Pedram Parsian    schedule 04.01.2020