【问题标题】:File not uploading django drf文件未上传 django drf
【发布时间】:2020-01-04 10:28:02
【问题描述】:

我正在尝试使用 drf 从反应前端上传图像这是我得到的错误:

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

models.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

views.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

urls.py:

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

我想在类别中上传多张图片...................................... ..........

【问题讨论】:

    标签: django python-3.x django-rest-framework


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 2020-09-30
      • 2021-01-27
      • 2013-05-13
      相关资源
      最近更新 更多