Я создаю свой первый проект с Django, и у меня возникли проблемы с путем к файлу. Я использую модель для хранения информации в БД и передаю некоторые поля / метаданные из представлений, например, размер, имя файла, ...
Моя проблема в том, что Django автоматически переименовывает файл, если уже естьфайл с похожим именем. Это нормально. Но я не могу найти способ, как я могу сохранить новое имя и путь к файлу в моей базе данных.
initial_obj.file.url просто дает мне "/media/filename.txt", но правильный путь:"media / userfiles / 2019/11/10 / filename_1nswmaP.txt"
views.py
def model_form_upload(request):
if request.method == 'POST':
form = UploadForm(request.POST, request.FILES)
if form.is_valid():
initial_obj = UploadModel(file = request.FILES['file'])
initial_obj.status = 'Übermittelt'
initial_obj.uploaded_by = request.user.username
initial_obj.filename = initial_obj.file.name
initial_obj.filesize = initial_obj.file.size
initial_obj.filepath = initial_obj.file.url
initial_obj.save()
return redirect('home')
else:
form = UploadForm()
return render(request, 'upload/fileupload.html', {
'form': form
})
models.py
from django.conf import settings
class UploadModel(models.Model):
file = models.FileField(upload_to='userfiles/%Y/%m/%d/')
uploaded_at = models.DateTimeField(auto_now_add=True, blank=True)
uploaded_by = models.CharField(max_length=255)
status = models.CharField(max_length=255, choices = [("Fertig", "Fertig"),("Übermittelt","Übermittelt"),("In Bearbeitung","In Bearbeitung"),("Support","Support")])
filepath = models.CharField(max_length=999)
filename = models.CharField(max_length=255)
filesize = models.CharField(max_length=255)
def __str__(self):
return self.title