Загрузите изображение в папку с названием названия модели django [duplicate]

Если во время проверки не появляется ошибка MySQL, убедитесь, что вы правильно создали таблицу базы данных. Это случилось со мной. Ищите любые нежелательные запятые или цитаты.

122
задан Serjik 19 December 2015 в 09:05
поделиться

3 ответа

Вероятно, вы прочитали документацию , так что вот простой пример, чтобы сделать его понятным:

def content_file_name(instance, filename):
    return '/'.join(['content', instance.user.username, filename])

class Content(models.Model):
    name = models.CharField(max_length=200)
    user = models.ForeignKey(User)
    file = models.FileField(upload_to=content_file_name)

Как вы можете видеть, вам даже не нужно для использования указанного имени файла - вы можете переопределить это в своем upload_to вызываемом тоже, если хотите.

246
ответ дан SmileyChris 25 August 2018 в 20:56
поделиться

Это действительно помогло. Для немного более краткости, решил использовать лямбда в моем случае:

file = models.FileField(
    upload_to=lambda instance, filename: '/'.join(['mymodel', str(instance.pk), filename]),
)
12
ответ дан gdakram 25 August 2018 в 20:56
поделиться

Замечание об использовании значения pk объекта «экземпляр». Согласно документации:

В большинстве случаев этот объект еще не был сохранен в базе данных, поэтому, если он использует AutoField по умолчанию, он может еще не иметь значения для своего первичного ключа поле.

Следовательно, справедливость использования pk зависит от того, как определена ваша конкретная модель.

3
ответ дан Max Dudzinski 25 August 2018 в 20:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: