我試圖讓有人試圖上傳之前已經上傳過的模型文件,表單會阻止它提交。下面是相關代碼:如果文件已經存在於Django中,則完全阻止文件上傳
models.py
class File(models.Model):
file = models.FileField(upload_to='documents/')
forms.py
class FileForm(forms.ModelForm):
file = forms.FileField()
class Meta:
model = File
fields = ('file',)
views.py
def file_upload(request):
if request.method == 'POST':
form = FileForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('list_files')
else:
logger.error(form.errors)
else:
form = FileForm()
return render(request, 'files/file_upload.html', {'form': form})
比方說,有人上傳了一個名爲document_1.xlsx文件。現在這個代碼的方式,如果有人試圖上傳另一個名爲document_1.xlsx的文件,它會上傳它,並在點之前添加一些奇怪的後綴。我不想那樣。我希望表單不允許任何人上傳已經存在的文件,而不會破壞代碼。顯然,在模型的文件字段中添加'unique = True'不起作用。我見過很多問題,如果它已經存在,如何重命名文件,但我不希望這樣。如果該文件名已經存在,我想完全停止它。謝謝。
編輯:我不相信這是另一個問題的重複。該問題詢問如何覆蓋具有相同名稱的文件。這個問題是要求如何防止上傳同名的文件。
的[如何防止從Django的時候使用該名稱的文件已經存在更改文件名可能的複製? ](https://stackoverflow.com/questions/9214904/how-to-prevent-django-from-changing-file-name-when-a-file-with-that-name-already) –
Docs:https:/ /docs.djangoproject.com/en/1.11/ref/forms/validation/#cleaning-a-specific-field-attribute – allcaps