Я пытаюсь настроить свои загрузки так, чтобы, если пользователь joe загружает файл, он отправляется в MEDIA_ROOT / joe, а не все файлы идут в MEDIA_ROOT. Проблема в том, что я не знаю, как это определить в модели. Вот как это сейчас выглядит:
class Content(models.Model):
name = models.CharField(max_length=200)
user = models.ForeignKey(User)
file = models.FileField(upload_to='.')
Так что я хочу вместо "." в качестве upload_to укажите имя пользователя.
Я понимаю, что начиная с Django 1.0 вы можете определить свою собственную функцию для обработки upload_to, но эта функция также не знает, кем будет пользователь, поэтому я немного потерялся.
Спасибо за помощь!
источник
os.path.join
вместо,'/'.join
чтобы убедиться, что он также работает в системах, отличных от Unix. Они могут быть редкими, но это хорошая практика;)Это действительно помогло. Для краткости я решил использовать лямбду в моем случае:
источник
pk
перед сохранением. Он работает только для обновлений, а не для создания (вставки).migrations
операциях, потому что она не может быть сериализована в соответствии с документамиПримечание об использовании значения pk объекта 'instance'. Согласно документации:
Следовательно, обоснованность использования pk зависит от того, как определена ваша конкретная модель.
источник
Если у вас проблемы с миграцией, вам, вероятно, следует использовать
@deconstructible
декоратор.Использование:
источник