#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)