Как передать файл с одной модели на другую?

  1. I have a model in my django app which stores a file.

  2. I have made another model in the same app to store the files using foreign key from the 1st model.

  3. 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 без изменения старого файла.

Вернуться на верх