图片保存在其他表格中

时间:2019-04-05 07:55:21

标签: django django-models

我有一个视图可以上传照片。我正在使用一个模型“照片”和模型表格PhotoForm。图像已成功保存到数据库中。但是我又添加了一个模型PhotoTemp和关联的modelfom PhotoTempForm,并在视图中使用它们,而不是使用Photo和PhotoForm。但是,在上传图像时,它会保存到旧的Photo模型中,而不是PhotoTemp中。

我不明白为什么会这样。我在django项目中没有使用任何类型的缓存。 django是否使用任何默认缓存?

有人可以告诉我为什么会这样吗?

这是我的新views.py文件:

class ProgressBarUploadView(View):

    def post(self, request):
        time.sleep(1)  

        form = PhotoTempForm(self.request.POST, self.request.FILES)

        if form.is_valid():
            photoTemp = form.save(commit=False)

            photoTemp.photo_type = 'product'

            if ProgressBarUploadView.cover_photo:
                photoTemp.cover_photo_flag='yes'
                ProgressBarUploadView.cover_photo = False
            else: 
                photoTemp.cover_photo_flag='no'  


            photoTemp.save()

            data = {'is_valid': True, 'name': photoTemp.file.name, 'url': photoTemp.file.url}
        else:
            data = {'is_valid': False}
        return JsonResponse(data)

这是我的旧view.py文件:

class ProgressBarUploadView(View):

        def post(self, request):
            time.sleep(1)  

            form = PhotoForm(self.request.POST, self.request.FILES)

            if form.is_valid():
                photo = form.save(commit=False)

                photo.photo_type = 'product'

                if ProgressBarUploadView.cover_photo:
                    photo.cover_photo_flag='yes'
                    ProgressBarUploadView.cover_photo = False
                else: 
                    photo.cover_photo_flag='no'  


                photo.save()

                data = {'is_valid': True, 'name': photo.file.name, 'url': photo.file.url}
            else:
                data = {'is_valid': False}
            return JsonResponse(data)

这是models.py文件:

class Photo(models.Model):


    reference_id = models.IntegerField(default=0) 
    photo_type = models.CharField(max_length = 70, db_index = True)
    file = models.FileField(upload_to='photos/',default='NoImage.jpg')

    cover_photo_flag = models.CharField(default=0,max_length = 5, db_index = True)
    uploaded_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('-uploaded_at',)

class PhotoTemp(models.Model):


    reference_id = models.IntegerField(default=0) 
    photo_type = models.CharField(max_length = 70, db_index = True)
    file = models.FileField(upload_to='photos/',default='NoImage.jpg')

    cover_photo_flag = models.CharField(default=0,max_length = 5, db_index = True)
    uploaded_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('-uploaded_at',) 

这是我的form.py文件:

class PhotoForm(forms.ModelForm):
    class Meta:
        model = Photo
        fields = ('file', )


class PhotoTempForm(forms.ModelForm):
    class Meta:
        model = Photo
        fields = ('file', )        

1 个答案:

答案 0 :(得分:0)

在您的PhotoTempForm中,您已经使用Photo作为模型。因此,这就是为什么将图像保存在模型Photo中而不是PhotoTemp中的原因。

因此将您的PhotoTempForm更改为:

class PhotoTempForm(forms.ModelForm):
    class Meta:
        model = PhotoTemp <--change
        fields = ('file', )