【发布时间】:2021-10-05 09:43:52
【问题描述】:
我需要你的帮助......我有同样的问题,但有另一个特定的课程......我的需要是在更新新文件之前删除以前的文件,只有当字段被填写时......如果文件没有变化。 .. 1-当我用新的图片文件更新时...没关系,但它创建了一个带有一些字符的新文件(moto.jpg > moto_msi2Kup.jpg)... 2-当我只用新名称更新时(没有改变文件)...数据库中的图像字段更改...以前是word/moto.jpg ...更新后更改为moto.jpg(我们丢失了word目录信息...
我希望你理解我的需求......在这两种情况下,如果 FileField 为空,我需要取消更改图像字段......如果 FileField 被更改......删除以前的文件并上传新文件(仍然具有相同的名称)下面的视图, models 和 forms.py 以及屏幕截图...感谢您的帮助;)
这是我的问题的视频
views.py
def updateWord(request, pk):
word = Word.objects.get(id=pk)
form = WordForm(instance=word)
if request.method == 'POST':
form = WordForm(request.POST, request.FILES, instance=word)
if form.is_valid():
document = form.save(commit=False)
document.name = request.POST['name']
# if not form.data['image'] is None:
if request.FILES.get('image'):
print("On supprime le fichier")
word.delete_file()
document.save()
message = "Mot ["+request.POST['name'] + "] edité avec succès !"
messages.success(request, message)
return redirect('games:word')
context = {'form': form}
return render(request, 'games/createWord.html', context)
models.py
class Word(models.Model):
objects = models.Manager()
name = models.CharField(max_length=200, db_index=True)
slug = models.SlugField(max_length=200, unique=True, blank=True)
level = models.IntegerField(default=1)
image = models.FileField(upload_to='word/')
group = models.ForeignKey(Group, null=True, blank=True, on_delete=models.SET_NULL)
forms.py
class WordForm(ModelForm):
class Meta:
model = Word
fields = ('name', 'level', 'image', 'group')
【问题讨论】: