В Django как сделать bulk_create с моделью, в которой есть поле file?
У меня есть модель Документ:
class Folio():
status = models.OneToOneField(Status, on_delete=models.CASCADE, verbose_name='current status*')
file = models.FileField(
upload_to=create_route_file,
verbose_name='PDF*',
help_text='Format PDF'
)
Мне нужно создать объекты из него с помощью bulk_create()
, чтобы сделать это с помощью нескольких запросов.
Я пытаюсь создать объекты сначала с помощью простых Folio()
и Status()
, поместить их в список, а затем сохранить его с помощью bulk_create:
status = Status()
document_parameters = {
'status': status,
...
}
document = Document(**document_parameters)
file = custom_open_file_function(route_to_file)
file_name = 'name...'
file.file.save(file_name, File(file))
Последняя строка вызывает эту ошибку:
ValueError: save() prohibited to prevent data loss due to unsaved related object 'status'.
Я не хочу делать save()
там, потому что это проблема целостности с Status
и потому что я не хочу делать там запрос. Вся цель bulk_create
заключается в том, чтобы сделать один запрос к статусам и один запрос к документам, избегая выполнения одного запроса к каждому документу. Но я не знаю, как с этим справиться FileField
.