В моем приложении django есть ModelForm, которая позволяет пользователю загружать файл и сохранять его в хранилище aws s3.Что я хочу сделать, это переименовать файл с его первоначальным именем на имя поля timestamp
.То, что я пробовал до сих пор, это переопределение метода сохранения модели.Вот мой код:
models.py
from converter.storage_backends import CsvStorage
from django.db import models
from django.utils import timezone
import time
class CSVUpload(models.Model):
csv_file = models.FileField(storage=CsvStorage())
timestamp = models.CharField(max_length=1000, default= time.time())
def __str__(self):
return self.csv_file
def save(self, *args, **kwargs):
self.csv_file.name = self.timestamp + ".csv"
super(CSVUpload, self).save(*args, **kwargs)
forms.py
from django import forms
from .models import CSVUpload
import time
class CsvForm(forms.ModelForm):
csv_file = forms.FileField(widget=forms.FileInput(
attrs= {
'class': 'form-group',
}
))
timestamp = forms.CharField(initial = time.time())
class Meta:
model = CSVUpload
fields = ('csv_file', 'timestamp',)
def save(self):
csvfile = super(CsvForm, self).save()
return csvfile
мой взгляд:
def uploadcsv(request):
if request.method == 'POST':
form = CsvForm(request.POST, request.FILES)
if form.is_valid():
return redirect(about)
else:
form = CsvForm()
return render(request, 'myapp/uploadcsv.html',{'form': form})
РЕДАКТИРОВАТЬ
storage_backends.py
from storages.backends.s3boto3 import S3Boto3Storage
from django.conf import settings
class CsvStorage(S3Boto3Storage):
location = settings.AWS_CSV_LOCATION
file_overwrite = False
Несмотря на это, когда я загружаю файл, он не попадает в корзину.Я не уверен, что не так, но я подозреваю, что это лежит на методе сохранения.Может ли кто-нибудь помочь мне понять, как решить эту проблему?Я ценю любую помощь