That was it! Thanks. :)
On Apr 3, 8:09 am, "Karen Tracey" <[EMAIL PROTECTED]> wrote:
> On Wed, Apr 2, 2008 at 6:00 PM, Josh <[EMAIL PROTECTED]> wrote:
>
> > Sorry, here's the full traceback:
>
> > Environment:
>
> > Request Method: GET
> > Request URL:
> >http://myproject.webfactional.com/admin/words/word/278/delete/
> > Django Version: 0.97-pre-SVN-7388
> > Python Version: 2.5.1
> > Installed Applications:
> > ['django.contrib.auth',
> > 'django.contrib.contenttypes',
> > 'django.contrib.sessions',
> > 'django.contrib.sites',
> > 'django.contrib.admin',
> > 'django.contrib.databrowse',
> > 'myproject.portfolio',
> > 'myproject.words',
> > 'myproject.news',
> > 'myproject.industryinsider',
> > 'sorl.thumbnail',
> > 'tagging']
> > Installed Middleware:
> > ('django.middleware.common.CommonMiddleware',
> > 'django.contrib.sessions.middleware.SessionMiddleware',
> > 'django.contrib.auth.middleware.AuthenticationMiddleware',
> > 'django.middleware.doc.XViewMiddleware')
>
> > Traceback:
> > File "/home/myproject/lib/python2.5/django/core/handlers/base.py" in
> > get_response
> > 82. response = callback(request, *callback_args,
> > **callback_kwargs)
> > File "/home/myproject/webapps/django/myproject/portfolio/
> > admin_views.py" in delete_stage_with_post_url
> > 43. return django.contrib.admin.views.main.delete_stage(request,
> > app_label, model_name, object_id)
> > File "/home/myproject/lib/python2.5/django/contrib/admin/views/
> > decorators.py" in _checklogin
> > 62. return view_func(request, *args, **kwargs)
> > File "/home/myproject/lib/python2.5/django/views/decorators/cache.py"
> > in _wrapped_view_func
> > 44. response = view_func(request, *args, **kwargs)
> > File "/home/myproject/lib/python2.5/django/contrib/admin/views/
> > main.py" in delete_stage
> > 516. _get_deleted_objects(deleted_objects, perms_needed,
> > request.user, obj, opts, 1)
> > File "/home/myproject/lib/python2.5/django/contrib/admin/views/
> > main.py" in _get_deleted_objects
> > 457. nh(deleted_objects, current_depth, [u'%s:
> > %s' % (force_unicode(capfirst(related.opts.verbose_name)),
> > escape(sub_obj)), []])
> > File "/home/myproject/lib/python2.5/django/utils/functional.py" in
> > wrapper
> > 239. return func(*args, **kwargs)
> > File "/home/myproject/lib/python2.5/django/utils/html.py" in escape
> > 32. return mark_safe(force_unicode(html).replace('&',
> > '&').replace('<', '<').replace('>', '>').replace('"',
> > '"').replace("'", '''))
> > File "/home/myproject/lib/python2.5/django/utils/encoding.py" in
> > force_unicode
> > 51. s = unicode(s)
>
> > Exception Type: TypeError at /admin/words/word/278/delete/
> > Exception Value: coercing to Unicode: need string or buffer, Word
> > found
>
> So the admin code is busy collecting up a list of related items it is going
> to delete along with the one you selected to delete, in order to display a
> page listing them for you to confirm that you really want to delete them.
> But when it tries to generate the unicode for one of these objects, by
> calling your model's __unicode__ function, it somewhere gets back a Word
> instead of a unicode string. If you have indeed fixed the one place where
> you already ran into this, then that implies you've got another model's
> __unicode__ function doing the same thing. Check all your model's
> __unicode__ functions and make sure they are really returning strings, not
> objects.
>
> Karen
>
>
>
> > On Apr 2, 2:21 pm, "Karen Tracey" <[EMAIL PROTECTED]> wrote:
> > > On Wed, Apr 2, 2008 at 11:41 AM, Josh <[EMAIL PROTECTED]> wrote:
>
> > > > I've created a sort of modified tagging system for the site I'm
> > > > working on. Because of the nature of the 'tags' I had to diverge a
> > > > little form the standard and my models look like this:
>
> > > > class Word(models.Model):
> > > > word = models.CharField(max_length=30)
> > > > slug = models.SlugField(prepopulate_from=("word",))
> > > > alternate_spelling = models.CharField(max_length=30,
> > blank=True)
> > > > pronunciation = models.CharField(max_length=30, blank=True)
> > > > pronunciation_example =
> > > > models.FileField(upload_to="pronunciations",
> > > > blank=True)
> > > > notes = models.TextField(blank=True)
> > > > categories = models.ManyToManyField("FoodWordsCategory",
> > > > blank=True)
>
> > > > def __unicode__(self):
> > > > return self.word
>
> > > > def save(self):
> > > > super(Word, self).save()
> > > > foodwords.scan_for_word(self)
>
> > > > class Admin:
> > > > ordering = ('word',)
> > > > search_fields = ['word', 'alternate_spelling',]
>
> > > > class WordedItem(models.Model):
> > > > word = models.ForeignKey(Word)
> > > > content_type = models.ForeignKey(ContentType)
> > > > object_id = models.PositiveIntegerField()
> > > > content_object = generic.GenericForeignKey('content_type',
> > > > 'object_id')
>
> > > > def __unicode__(self):
> > > > return self.word
>
> > > This should be return __unicode__(self.word)
>
> > > > This seems like it should be all well and good, and for the most part
> > > > it is. But I'm running into some strange issues that appear to be
> > > > related to the fact that WordedItem.word is a ForeignKey. For example:
>
> > > > >>> relations = word.wordeditem_set.all()
> > > > >>> relations
> > > > Traceback (most recent call last):
> > > > File "<stdin>", line 1, in <module>
> > > > File "/home/bostonchefs/lib/python2.5/django/db/models/query.py",
> > > > line 108, in __repr__
> > > > return repr(self._get_data())
> > > > File "/home/bostonchefs/lib/python2.5/django/db/models/base.py",
> > > > line 125, in __repr__
> > > > return smart_str(u'<%s: %s>' % (self.__class__.__name__,
> > > > unicode(self)))
> > > > TypeError: coercing to Unicode: need string or buffer, Word found
>
> > > > Obviously the problem here is that a Word object is being returned
> > > > instead of a unicode string, and I can fix that by simple chaging the
> > > > def __unicode__(self) to return a simple string (return "string" is
> > > > fine for now). However even when I do that I'm still encountering what
> > > > appears to be the same problem elsewhere. If I create a Word object,
> > > > thanks to the custom save() method I wrote it automatically associates
> > > > itself with the appropriate objects (it does a search on the
> > > > appropriate database fields, &c). So essentially any time you create a
> > > > Word object you can be sure it's going to be associated with some
> > > > WordedItem objects. The problem comes in if you then try and delete
> > > > that Word object from the admin interface. When I do so, I get
> > > > basically the same error as above:
>
> > > > TypeError at /admin/words/word/278/delete/
> > > > coercing to Unicode: need string or buffer, Word found
>
> > > Since this is the error you haven't figured out yet, this is the one
> > that
> > > really needs a full traceback in order for people to help figure out
> > what is
> > > going on.
>
> > > > This happens even after I change __unicode__(self) to return "string".
> > > > But, if I try and delete the Word object from the command line it
> > > > successfully deletes both the Word and the related WordedItems. Does
> > > > anyone have any idea what might be going on here?
>
> > > Not yet.
>
> > > Karen
>
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---