У вас есть два варианта.
Я предполагаю, что ваша Project
модель - только фрагмент кода.
Вариант 1 состоит в том, чтобы разбить вашу модель так, чтобы у проекта не было ни одного файла, а модель проекта была бы связана с моделью ProjectFile. Возможно, один ко многим. Один проект как много ProjectFiles. То есть у ProjectFile есть ForeigKey для Project.
Затем вы можете добавить новый ProjectFile на основе старого ProjectFile. Вы можете удалить их, и дурачиться все, что вы хотите. Действительно, вы можете сохранить оба файла ProjectFile с индикатором «текущий».
Вариант 2 - self.video.open("w")
, чтобы открыть файл для записи. Перепишите содержимое "на месте". Вместо удаления и замены файла, перезаписать старый файл новым содержимым.
with open(video_path ,"rb") as source:
self.video.open("wb")
bytes= source.read(4096)
if bytes:
self.video.write( bytes )
bytes= source.read(4096)
Это, вероятно, будет делать то, что вы хотите.
Да, это кажется неэффективным. Это действительно не так уж и плохо. Преобразование занимает вечность. Копия занимает минуты.