Я пытаюсь реализовать функциональность, где пользователь может загрузить файл и выбрать (в форме), будет ли этот файл глобальным (доступным для всех) или закрытым (доступным только для него). Форма будет выглядеть следующим образом:
Сначала я удвоил модель, представление, форму и т. Д. c. где единственная разница была:
file = models.FileField(upload_to=user_directory_path)
и
file = models.FileField(upload_to='global files/')
- это то, что разрушает DRY правило. Очевидно, это не то, чего я хочу достичь.
Итак, я попытался сделать логическое значение в модели и изменил параметр upload_to
в зависимости от выбора пользователя:
class FileModel(models.Model):
title = models.CharField(max_length=50, blank=True)
uploaded_at = models.DateTimeField(auto_now_add=True)
file = models.FileField(upload_to=user_directory_path)
user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
STATUS = (
(1, ('Global file')),
(2, ('My file')),
)
status = models.CharField(max_length = 30, choices=STATUS, default=2)
if status == 'My file':
file = models.FileField(upload_to=user_directory_path)
elif status == 'Global file':
file = models.FileField(upload_to='global files')
К сожалению, это не работает. У кого-нибудь есть идеи, как это реализовать?