Hey, I have a model for Thumbnail, but I cannot save it. It says: AttributeError: 'Thumbnail' object has no attribute 'id'. What is wrong?
I use django 1.0-final-SVN-unknown thanks, Manuel Here is an example: >>> from portfolio.models import Photo, Thumbnail >>> p = Photo.objects.all()[0] >>> t = Thumbnail(p,'w300') >>> t.save() Traceback (most recent call last): File "<console>", line 1, in <module> File "/Users/manuel/Sites/mgh/django/db/models/base.py", line 307, in save self.save_base(force_insert=force_insert, force_update=force_update) File "/Users/manuel/Sites/mgh/django/db/models/base.py", line 347, in save_base pk_val = self._get_pk_val(meta) File "/Users/manuel/Sites/mgh/django/db/models/base.py", line 288, in _get_pk_val return getattr(self, meta.pk.attname) AttributeError: 'Thumbnail' object has no attribute 'id' The models: from django.db import models from django.utils.translation import ugettext as _ import Image as PilImage import ekin.settings as s import os # Create your models here. class Galery(models.Model): title = models.CharField(_("Name"), max_length=200) class Photo(models.Model): picture = models.ImageField(null=True, upload_to='./images/') caption = models.CharField(_("Optional caption"),max_length=100,null=True, blank=True) item = models.ForeignKey(Galery) def get_thumbnail_url(self, string): return Thumbnail(self, string).get_thumbnail() def __unicode__(self): return unicode(self.picture) class Thumbnail(models.Model): miniature_url = models.CharField(max_length=100) item = models.ForeignKey(Photo) x,y = None, None def __init__(self, item, dimensions): self.dimensions = dimensions self.item = item self.__process() self.__make_thumbnail() def __unicode__(self): return "Thumbnail %s of %s" %(self.dimensions , self.item) def get_thumbnail(self): # if the image wasn't already resized, resize it if not os.path.exists(self.miniature_filename) :#or os.stat(miniature_filename).st_ctime < os.stat(filename).st_ctime: self.__make_thumbnail() return self.miniature_url def __process(self): x,y=None,None if 'x' in self.dimensions: x, y = [int(x) for x in self.dimensions.split('x')] elif 'w' in self.dimensions: x = int(self.dimensions[1:]) elif 'h' in self.dimensions: y = int(self.dimensions[1:]) self.size = [x,y] # defining the filename and the miniature filename basename, format = self.item.picture.name.rsplit('.', 1) miniature_folder = os.path.join(s.MEDIA_ROOT, basename+'/') if not os.path.exists(miniature_folder): os.mkdir(miniature_folder) miniature = basename + '/' +self.dimensions.replace(' ','') + '.' + format self.miniature_filename = os.path.join(s.MEDIA_ROOT, miniature) self.miniature_url = os.path.join(s.MEDIA_URL, miniature) self.filename = os.path.join(s.MEDIA_ROOT,self.item.picture.name) def __make_thumbnail(self): if os.path.exists(self.miniature_filename): os.remove(self.miniature_filename) image = PilImage.open(self.filename) old_image_size=image.size if not self.x or not self.y: self.x, self.y = image.size if not self.size[1]: self.size[1]=int(self.y*(float(self.size[0])/self.x)) elif not self.size[0]: self.size[0]=int(self.x*(float(self.size[1])/self.y)) image.thumbnail([self.size[0],self.size[1]],PilImage.ANTIALIAS) image.save(self.miniature_filename, image.format) and the db looks good: CREATE TABLE `portfolio_thumbnail` ( `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `miniature_url` varchar(100) NOT NULL, `item_id` integer NOT NULL ) ; --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---