Задать вопрос
@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 как функция с заданными по умолчанию переменными?
  • Вопрос задан
  • 152 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
  1. Потому что если прописать просто User, код не будет работать в тех проектах, где модель пользователя переопределена.
  2. Скорее наоборот, если в upload_to передано то, что нельзя вызвать, то это строка.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽
Крона Лабс Екатеринбург
от 200 000 ₽