我正在尝试通过Django开发一个简单的模型表单来上传pdf文件。表单基于模型。每次用户上传文件时,将使用文件路径(包括文件名),上传的用户名和时间等创建数据库表条目。
当我再次上传相同的文件时,Django通过更改其名称来上传相同的文件(poster-proposal.pdf - > poster-proposal_IomFZQM.pdf)。它还在数据库表中创建另一个条目。
我希望Django在尝试上传已存在的文件(已存在同名文件)或类似内容而不上传重复文件时向用户发出警告。
我按照这篇文章,post 1,但它说它不会阻止Django上传文件。
我遵循这个方法post 2,但我是Django的新手,看起来很复杂。我相信对于较新的Django版本,应该有一种更简单的方法来解决这个问题。
我在FileField中添加了unique = True。它没有用
models.朋友
class files(models.Model):
repo_id = models.ForeignKey(Repository, on_delete = models.CASCADE)
username = models.CharField(db_column='username',max_length = 45)
date = models.DateTimeField(auto_now_add=True, db_column = 'date')
file = models.FileField(upload_to='documents/', db_column = 'file', unique = True)
indicator_name =models.CharField(db_column = 'indicator_name',max_length = 100)
username = models.CharField(db_column='username',max_length = 45)
任何想法都将受到高度赞赏。谢谢
最简单的方法是搜索名称,然后上传文件:
# Note that file name depends on your upload_to path.
# Either you should include it in the search or you have to use something like:
# filter(file_contains="filename") which might return results that you don't want
filename = "documents/" + filename_you_want_to_upload
files = files.objects.filter(file=filename)
if files.count() > 0:
# A file with that name exists.
# Return some error or ...
else:
# There is no file with that name.
# Upload the file and save it to database.