我有一个视图可以上传照片。我正在使用一个模型“照片”和模型表格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', )
答案 0 :(得分:0)
在您的PhotoTempForm
中,您已经使用Photo
作为模型。因此,这就是为什么将图像保存在模型Photo
中而不是PhotoTemp
中的原因。
因此将您的PhotoTempForm
更改为:
class PhotoTempForm(forms.ModelForm):
class Meta:
model = PhotoTemp <--change
fields = ('file', )