функция в моделях неузнаваема

#django #django-models

#django #django-модели

Вопрос:

Я пытаюсь расширить существующие модели, поэтому добавил к ним «эскизы». К сожалению, функция, связанная с этим, не распознается, и консоль django выдает мне:

 thumbnail = models.ImageField(upload_to=_get_upload_image, blank=True, null=True)
NameError: name '_get_upload_image' is not defined
  

Может ли кто-нибудь помочь мне с этой проблемой?

Django 1.6.5 models.py (короткая версия)

 class Feed(models.Model):
    link = models.CharField(blank=True, max_length=450)
    url = models.CharField(blank=True, max_length=450)
    title = models.CharField(blank=True, null=True, max_length=250)
    category = models.ForeignKey(Category, blank=True, null=True)
    user = models.ForeignKey(User, blank=True, null=True)
    last_update = models.DateField(blank=True, null=True, editable=False)
    country = models.ForeignKey(Country, blank=True, null=True)
    thumbnail = models.ImageField(upload_to=_get_upload_image, blank=True, null=True)

    class Meta:
        unique_together = (
            ("url", "user"),
        )

    def _get_upload_image(instance, filename):
        return "images/%s_%S" % (str(time()).replace('.','_'), filename)
  

Комментарии:

1. Измените доступ _get_upload_image к методу класса на вспомогательный метод (уменьшите отступ на один уровень), и он будет работать

2. У меня уже есть больше функций в этом классе, это приложение django-feedme, и я хочу расширить его.

Ответ №1:

Я решил это, поместив функцию поверх класса

 class Feed(models.Model):

    def _get_upload_image(instance, filename):
        return "images/%s_%S" % (str(time()).replace('.','_'), filename)

    link = models.CharField(blank=True, max_length=450)
    url = models.CharField(blank=True, max_length=450)
    title = models.CharField(blank=True, null=True, max_length=250)
    category = models.ForeignKey(Category, blank=True, null=True)
    user = models.ForeignKey(User, blank=True, null=True)
    last_update = models.DateField(blank=True, null=True, editable=False)
    country = models.ForeignKey(Country, blank=True, null=True)
    thumbnail = models.ImageField(upload_to=_get_upload_image, blank=True, null=True)