У меня есть две модели, обе имеют FileField
как так:Джанго - Заменить файл в FileField с файлом из другого FileField
class OriginalFile(models.Model):
docfile = models.FileField(upload_to=file_path)
class RevisedFile(models.Model):
newfile = models.FileField(upload_to=revisedfile_path)
originalfile = models.ForeignKey(OriginalFile, on_delete=models.PROTECT)
Как вы видите, при загрузке файла в первый раз, он получает загружены file_path
в модели OriginalFile
. Однако, если пользователь загружает исправленную версию того же файла, он сохраняется в revisedfile_path
в модели RevisedFile
.
Обычный пользователь не имеет права самостоятельно пересматривать файл (поэтому я не заменяю исходный файл в этот момент). Если менеджер принимает пересмотренный файл, то следующие вещи должны произойти:
- Заменить
docfile
изOriginalFile
сnewfile
изRevisedFile
- Удалить соответствующий экземпляр
RevisedFile
вместе сnewfile
сохраняется в каталоге.
Имена docfile
и newfile
можно считать одинаковыми. Я понятия не имею, как подойти к этой проблеме. Любую помощь можно было бы высоко ценить. Благодарю.
Звучит так, как будто пользователи имеют доступ к вашей файловой системе и вы загружаете их в разные каталоги, чтобы ограничить доступ для пользователей, не являющихся менеджерами. Это так? –
Да, обычные пользователи загружают файлы, используя форму. – Rahul