Модель Django с динамическими атрибутами

Я полностью, совершенно новичок в программировании, поэтому, пожалуйста, простите, что это, наверное, глупый вопрос, но я бил головой об этом в течение последних нескольких дней.

У меня две модели, фотографии и эскизы. Я пытаюсь придумать простой и динамичный способ получить ссылки на миниатюры для каждой фотографии. Я придумал функцию, которая делает это (get_thumbs), но я бы хотел, чтобы она запускалась автоматически при вызове модели (в основном, так что я получаю Photo.get_% s_url% thumb.name, как только модель будет доступна) ,

Ниже приведены мои models.py. Любая помощь или подталкивание в правильном направлении (даже если это просто «goah blah»), будет с благодарностью. Благодарю.

class Photo(models.Model): name = models.CharField(max_length=100) original_image = models.ImageField(upload_to='photos') caption = models.TextField(null=True, blank=True) title_slug = models.SlugField(null=True, blank=True, unique=True) rootfilename = models.CharField(max_length=50, editable=False, blank=True) num_views = models.PositiveIntegerField(editable=False, default=0) def __unicode__(self): return self.name thumbnails = Thumbnail.objects.all() def create_thumbs(self): for thumbnail in self.thumbnails: fname = (settings.MEDIA_ROOT + self.rootfilename + '_' + thumbnail.name + '.jpg') if exists(fname): None else: t_img = Image.open(self.original_image.path) t_fit = ImageOps.fit(t_img, (thumbnail.height,thumbnail.width), Image.ANTIALIAS, 0, (0.5,0.5)) t_fit.save(fname,"JPEG") def save(self, *args, **kwargs): self.rootfilename = (self.original_image.name).strip('photos/.jpg') super(Photo, self).save(*args, **kwargs) self.create_thumbs() def get_thumbs(self): for thumb in self.thumbnails: setattr(self, ('get_'+thumb.name+'_url'), ('thumbs/'+self.rootfilename+'_'+thumb.name+'.jpg')) 

One Solution collect form web for “Модель Django с динамическими атрибутами”

Вы хотите переопределить метод __init__ как вы это делали с методом сохранения, и вызвать self.get_thumbs() перед вызовом super (Photo, self). init (* args, ** kwargs)

В качестве альтернативы вы можете посмотреть на решение других проблем этой проблемы: sorl.thumbnail, django-imagekit или простые миниатюры (что похоже на комбинацию из двух)

  • Перемещение многомерного словаря в django
  • Django ORM SELECT с присоединением
  • Ошибка проверки Django 1.6 AbstractUser m2m
  • Могу ли я использовать ForeignKey в возврате __unicode__?
  • как добавить разрешения в Django в модели и протестировать его с помощью оболочки
  • Как использовать функции модели Django
  • Рабочий процесс Django при частом изменении моделей?
  • Ошибка python_2_unicode_compatible
  • Ajax succesfull call show div с данными формы
  • как выполнить файл результата с помощью Django?
  • Получить список всех установленных приложений в Django и их атрибутах
  • Python - лучший язык программирования в мире.