Django - добавление ссылки на скачивание на основе назначения upload_folder
Я задал место хранения файла на основе введенных данных. Может ли кто-нибудь помочь мне с установкой ссылки для скачивания? Как мне включить это в корень медиа
models.py
class lMetadataform(models.Model):
def upload_folder(self, filename):
return f'LectureMaterial/{self.mtype}/{filename}'
#fields
id = models.AutoField(primary_key=True)
mtype= models.CharField(max_length=2000, blank=True)
document = models.FileField(upload_to=upload_folder, verbose_name="data", validators=[validate_file_extension], unique=True)
page.html
<td><a href="../ldownload/{{ b.document }}"> Dataset</a></td>
views.py
def ldownload(request,id):
with connection.cursor() as cursor:
query = ''
query += str(id)
#print(query)
cursor.execute(query)
row = cursor.fetchone()
if row:
print(row[0])
fullname = settings.MEDIA_ROOT + row[0]
filename = os.path.basename(fullname)
print('FILE: ',fullname)
print('NAME: ',filename)
fsock = open(fullname, 'rb')
if fsock.closed:
print("File closed")
response = HttpResponse(fsock, content_type='application/gzip')
response['Content-Disposition'] = "attachment; filename=%s" % \
(filename)
return response
else:
print("File does not exist")
return render(request, 'home.html')
urls.py
path('ldownload/<id>', views.ldownload, name='ldownload'),