Для загрузки файлов в 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()
Вернуться на верх