Для загрузки файлов в Django я могу установить models.FileField напрямую без использования формы или веб-ввода
В каждом примере загрузки, который я могу найти для Django, используется веб-вход для получения файла. Но я получаю файлы из массива конечных точек REST api и получаю файлы в виде байтовых строк. Я использую класс Model с бэкенд-хранилищем boto3 для загрузки на S3. Я могу загружать файлы с помощью админки django, но не могу сделать это вручную. Фактический код слишком длинный, но вот некоторый псевдокод. Мой вопрос в том, какой тип данных мне нужен для x в этой строке:
zipf.zipfile = x
Вот псевдокод:
class UploadedZip(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name='zipfiles')
name = models.CharField(max_length=102)
zipfile = models.FileField(upload_to="zipfile")
def getfiles(request):
files = apicall() # Returns include a list of links
for f in files:
# the return can be a byte string of data or I could save it to a tmp file if I need to
x = callapi_inline(request, f.apiurl)
if x and len(x) > 0:
zipf = UploadedZip()
zipf.zipfile = x
zipf.name = f[0]['name']
zipf.user = request.user
zipf.save()