Как передать файл с одной модели на другую?
I have a model in my django app which stores a file.
I have made another model in the same app to store the files using foreign key from the 1st model.
When a new file arrives in model 1 push the existing file to the model 2, and keep the new file in the model 1 and all the old files in model 2.
Есть ли у кого-нибудь идеи, как я могу это реализовать.
Я уже делал нечто подобное, когда хотел скопировать FileField из одной модели в другую, не копируя файл.
Представим, что у вас есть две модели, Model1 и Model2. Модель1 хранит текущую версию вашего файла. Модель2 хранит прошлые версии. Обе модели имеют поля FileFields с именем file.
Вот как может выглядеть ваш файл models.py:
class Model1(models.Model):
# ...
file = models.FileField()
class Model2(models.Model):
# ...
file = models.FileField()
Когда вы создаете новую Модель2, вы ссылаетесь на файл Модели1, прежде чем изменить этот файл.
existing_model1 = ... # Assume you get the Model1 object somehow.
Model2.objects.create(file=existing_model1.file)
# Now you can change existing_model1.file
По умолчанию Django не будет перезаписывать старый файл новым, поэтому безопасно изменять existing_model1.file без изменения старого файла.