Как получить значение атрибута модели по ForeignKey?

Добрый день!

имеются две модели:


class Hotel(models.Model):
    name = models.CharField('Наименование отеля', max_length=150)   
    #я убрал здесь некоторые поля
    slug = models.SlugField(max_length=150, unique=True)

    def __str__(self):
        return self.name

class HotelImage(models.Model):
    hotel = models.ForeignKey(Hotel, on_delete=models.CASCADE, verbose_name='Отель')
    
    #slug = ... (здесь я хочу получить slug из класса Hotel)

    image = models.ImageField(upload_to=get_upload_path)


Мне нужно получить атрибут slug из модели Hotel чтобы передать ее в функцию get_upload_path, которая переименовывает файл и формирует путь для его загрузки. С другими моделями где поле slug создано так: slug = models.SlugField(max_length=150, unique=True) - функция работает.

я пробовал так:

slug = Hotel.slug
#Ошибка: HotelImage has no field named 'slug'

slug = str(Hotel.slug)
#Ошибка: Storage can not find an available filename for "img_hotels\<django.db.models.query_utils.DeferredAttribute object at 0x000000A1639F5310>\django.db.models.query_utils.DeferredAttribute_object_at_0x000000A1639F5310-3d6ae_VIhJkIQ.jpg". Please make sure that the corresponding file field allows sufficient "max_length".


во-втором случае вроде бы функция срабатывает, но ей передается не значение поля slug, а какие-то его "внутренности" в строковом представлении, длина которых слишком велика.

Подскажите, пожалуйста, куда копать? Может быть это поле нужно получать через метод класса?

Спасибо!
  • Вопрос задан
  • 581 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

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