Thanks, Karen. You were right - I had overridden it. If I delete the
__unicode__ method it works now. What's odd is that I can't seem to
catch any exception. If I try the code below, the admin still breaks.
And what's also odd is that I never see my models.py file in the stack
trace.

    def __unicode__(self):
        try:
            return self.document.url
        except:
            return u'File deleted'

Thanks,
-Dave

On Sep 25, 10:36 am, Karen Tracey <kmtra...@gmail.com> wrote:
> On Fri, Sep 25, 2009 at 9:05 AM, DavidA <david.avraami...@gmail.com> wrote:
>
> > I'm getting this error when I try to remove an inline model instance
> > in the Django admin:
>
> >    Traceback:
> >    File "C:\Python25\lib\site-packages\django\core\handlers\base.py"
> > in get_response
> >      92.                 response = callback(request, *callback_args,
> > **callback_kwargs)
> >    File "C:\Python25\lib\site-packages\django\contrib\admin\sites.py"
> > in root
> >      490.                 return self.model_page(request, *url.split
> > ('/', 2))
> >    File "C:\Python25\lib\site-packages\django\views\decorators
> > \cache.py" in _wrapped_view_func
> >      44.         response = view_func(request, *args, **kwargs)
> >    File "C:\Python25\lib\site-packages\django\contrib\admin\sites.py"
> > in model_page
> >      509.         return admin_obj(request, rest_of_url)
> >    File "C:\Python25\lib\site-packages\django\contrib\admin
> > \options.py" in __call__
> >      1098.             return self.change_view(request, unquote(url))
> >    File "C:\Python25\lib\site-packages\django\db\transaction.py" in
> > _commit_on_success
> >      240.                 res = func(*args, **kw)
> >    File "C:\Python25\lib\site-packages\django\contrib\admin
> > \options.py" in change_view
> >      835.                 change_message =
> > self.construct_change_message(request, form, formsets)
> >    File "C:\Python25\lib\site-packages\django\contrib\admin
> > \options.py" in construct_change_message
> >      535.                                              'object':
> > force_unicode(deleted_object)})
> >    File "C:\Python25\Lib\site-packages\django\utils\encoding.py" in
> > force_unicode
> >      71.                 s = unicode(s)
> >    File "C:\private\src\itweb\..\itweb\controls\models.py" in
> > __unicode__
> >      160.         return self.document.url
>
> You don't include this __unicode__ method in the code below, but this is
> likely where the problem is.  What the admin is trying to log is the unicode
> value of your deleted object.  I think you need to change your model's
> unicode method so that it does not trigger an exception when it is called
> for an instance that has no associated file.
>
> Karen
>
>
>
> >    File "C:\Python25\lib\site-packages\django\db\models\fields
> > \files.py" in _get_url
> >      68.         self._require_file()
> >    File "C:\Python25\lib\site-packages\django\db\models\fields
> > \files.py" in _require_file
> >      46.             raise ValueError("The '%s' attribute has no file
> > associated with it." % self.field.name)
>
> >    Exception Type: ValueError at /admin/controls/review/24/
> >    Exception Value: The 'document' attribute has no file associated
> > with it.
>
> > I can see that the file is being deleted on disk, but then it looks
> > like this error is being thrown when the admin is trying to display a
> > summary message of what was done, and that triggers a _require_file()
> > call which raises an exception.
>
> > I have the following models:
>
> >    class Review(models.Model):
> >        name = models.CharField(max_length=80)
> >        review_type = models.CharField(max_length=20,
> > choices=REVIEW_TYPE_CHOICES)
> >        frequency = models.CharField(max_length=20,
> > choices=FREQUENCY_CHOICES,
> >                                     null=True, blank=True)
> >        description = models.TextField(null=True, blank=True)
>
> >    class Evidence(models.Model):
> >        review = models.ForeignKey(Review)
> >        review_time = models.DateTimeField(null=True, blank=True)
> >        reviewed_by = models.ForeignKey(User, null=True, blank=True)
> >        document = models.FileField(upload_to='evidence/%Y/%m/%d')
>
> > And admin classes:
>
> >    class EvidenceInline(admin.TabularInline):
> >        model = Evidence
>
> >    class ReviewAdmin(admin.ModelAdmin):
> >        list_display = ['name', 'review_type', 'frequency',
> > 'description']
> >        list_filter = ['review_type', 'frequency']
> >        search_fields = ['name', 'description']
> >        fieldsets = [
> >            (None,      {'fields':['name', 'review_type',
> > 'frequency']}),
> >            ('Details', {'fields':['description']}),
> >            ]
> >        inlines = [EvidenceInline]
>
> >    admin.site.register(Review, ReviewAdmin)
>
> > Am I doing something wrong?
>
> > Thanks,
> > -Dave
--~--~---------~--~----~------------~-------~--~----~
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 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to