@albertalexandrov

Функция для upload_to?

Всем привет!

Имеется два уточняющих вопроса по нижеследующему коду (источник):

from django.conf import settings
from django.db import models

def upload_update_image(instance, filename):
    return "updates/{user}/{filename}".format(user=instance.user, filename=filename)

class Update(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    content  = models.TextField(blank=True, null=True)
    image = models.ImageField(upload_to=upload_update_image, blank=True, null=True)
    updated = models.DateTimeField(auto_now=True)
    timestamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.content or ""


1. Почему используется конструкция user = models.ForeignKey(settings.AUTH_USER_MODEL), а не, к примеру, user = models.ForeignKey(USER)?
2. Если мы прописываем в upload_to= нечто, что не равно строке или переменной, хранящей строку, то это автоматически воспринимается django как функция с заданными по умолчанию переменными?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
  1. Потому что если прописать просто User, код не будет работать в тех проектах, где модель пользователя переопределена.
  2. Скорее наоборот, если в upload_to передано то, что нельзя вызвать, то это строка.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы