Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

coercing to Unicode: need string or buffer, NoneType found when rendering in django admin

I have this error since a long time but can't figure it out :

Caught TypeError while rendering: coercing to Unicode: need string or buffer, NoneType found

It happens in admin when I try to add or modify on one of my models (display works fine)

This is the model:

class PS(models.Model):     id_ps = models.IntegerField(null=True)     client = models.ForeignKey(Client, null=True, blank=True)     nom_du_site = models.CharField(max_length=250)     rue_livraison = models.TextField(null=True)     complement_adresse = models.TextField(null=True)     code_postal_livraison = models.CharField(max_length=50, null=True)     ville_livraison = models.CharField(max_length=200, null=True)     pays_livraison = models.CharField(max_length=200, null=True)     distributeur = models.CharField(max_length=50, null=True)     tarif = models.CharField(max_length=250, null=True)     type_tarif = models.CharField(max_length=50, null=True)     type_installation = models.CharField(max_length=50, null=True)      def __unicode__(self):         return self.nom_du_site      @property     def pce(self):                 try:             return PCE.objects.filter(ps=self)[0]         except IndexError:             return     #         def get_pce(self):         from pce.models import PCE         return PCE.objects.filter(ps=self).exclude(frequence='6M')     #     def get_pce_6m(self):         from pce.models import PCE         return PCE.objects.filter(ps=self,frequence='6M')  

Any idea what am i doing wrong here?

Traceback:

    Environment:      Request Method: GET     Request URL: http://127.0.0.1:8026/admin/ps/ps/add/     Django Version: 1.2.5     Python Version: 2.7.2     Installed Applications:     ['django.contrib.auth',      'django.contrib.contenttypes',      'django.contrib.sessions',      'django.contrib.sites',      'django.contrib.messages',      'django.contrib.admin',      'easy_thumbnails',      'django_extensions',      'contentadmin',      'south',      'sentry',      'sentry.client',      'indexer',      'file_uploader',      'paging',      'pagination',      'consommation',      'ps',      'pce',      'profil',      'analytics',      'document']     Installed Middleware:     ('annoying.middlewares.StaticServe',      'django.middleware.common.CommonMiddleware',      'django.contrib.sessions.middleware.SessionMiddleware',      'django.middleware.csrf.CsrfViewMiddleware',      'django.contrib.auth.middleware.AuthenticationMiddleware',      'django.contrib.messages.middleware.MessageMiddleware',      'pagination.middleware.PaginationMiddleware')       Template error:     In template /usr/local/lib/python2.7/dist-packages/django/contrib/admin/templates/admin/includes/fieldset.html, error at line 19        Caught TypeError while rendering: coercing to Unicode: need string or buffer, NoneType found        9 :             {% for field in line %}          10 :                 <div{% if not line.fields|length_is:'1' %} class="field-box{% if not field.is_readonly and field.errors %} errors{% endif %}"{% endif %}>          11 :                     {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}          12 :                     {% if field.is_checkbox %}          13 :                         {{ field.field }}{{ field.label_tag }}          14 :                     {% else %}          15 :                         {{ field.label_tag }}          16 :                         {% if field.is_readonly %}          17 :                             <p>{{ field.contents }}</p>          18 :                         {% else %}          19 :                              {{ field.field }}           20 :                         {% endif %}          21 :                     {% endif %}          22 :                     {% if field.field.field.help_text %}          23 :                         <p class="help">{{ field.field.field.help_text|safe }}</p>          24 :                     {% endif %}          25 :                 </div>          26 :             {% endfor %}          27 :         </div>          28 :     {% endfor %}          29 : </fieldset>       Traceback:     File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response       100.                     response = callback(request, *callback_args, **callback_kwargs)     File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in wrapper       288.                 return self.admin_site.admin_view(view)(*args, **kwargs)     File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view       76.                     response = view_func(request, *args, **kwargs)     File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func       78.         response = view_func(request, *args, **kwargs)     File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in inner       190.             return view(request, *args, **kwargs)     File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper       21.             return decorator(bound_func)(*args, **kwargs)     File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view       76.                     response = view_func(request, *args, **kwargs)     File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func       17.                 return func(self, *args2, **kwargs2)     File "/usr/local/lib/python2.7/dist-packages/django/db/transaction.py" in _commit_on_success       299.                     res = func(*args, **kw)     File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in add_view       909.         return self.render_change_form(request, context, form_url=form_url, add=True)     File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in render_change_form       692.         ], context, context_instance=context_instance)     File "/usr/local/lib/python2.7/dist-packages/django/shortcuts/__init__.py" in render_to_response       20.     return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)     File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py" in render_to_string       186.     return t.render(context_instance)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in render       173.             return self._render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in _render       167.         return self.nodelist.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in render       796.                 bits.append(self.render_node(node, context))     File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node       72.             result = node.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render       125.         return compiled_parent._render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in _render       167.         return self.nodelist.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in render       796.                 bits.append(self.render_node(node, context))     File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node       72.             result = node.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render       125.         return compiled_parent._render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in _render       167.         return self.nodelist.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in render       796.                 bits.append(self.render_node(node, context))     File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node       72.             result = node.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render       62.             result = block.nodelist.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in render       796.                 bits.append(self.render_node(node, context))     File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node       72.             result = node.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py" in render       174.                 nodelist.append(node.render(context))     File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render       139.             return self.template.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in render       173.             return self._render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in _render       167.         return self.nodelist.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in render       796.                 bits.append(self.render_node(node, context))     File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node       72.             result = node.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py" in render       174.                 nodelist.append(node.render(context))     File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py" in render       174.                 nodelist.append(node.render(context))     File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py" in render       260.             return self.nodelist_false.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in render       796.                 bits.append(self.render_node(node, context))     File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node       72.             result = node.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py" in render       260.             return self.nodelist_false.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/__init__.py" in render       796.                 bits.append(self.render_node(node, context))     File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node       72.             result = node.render(context)     File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render       91.             output = force_unicode(output)     File "/usr/local/lib/python2.7/dist-packages/django/utils/encoding.py" in force_unicode       66.                 s = unicode(s)     File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in __unicode__       408.         return self.as_widget()     File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in as_widget       450.         return widget.render(name, data, attrs=attrs)     File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/widgets.py" in render       247.         output = [self.widget.render(name, value, *args, **kwargs)]     File "/usr/local/lib/python2.7/dist-packages/django/forms/widgets.py" in render       447.         options = self.render_options(choices, [value])     File "/usr/local/lib/python2.7/dist-packages/django/forms/widgets.py" in render_options       464.         for option_value, option_label in chain(self.choices, choices):     File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py" in __iter__       898.                 yield self.choice(obj)     File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py" in choice       904.         return (self.field.prepare_value(obj), self.field.label_from_instance(obj))     File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py" in label_from_instance       955.         return smart_unicode(obj)     File "/usr/local/lib/python2.7/dist-packages/django/utils/encoding.py" in smart_unicode       39.     return force_unicode(s, encoding, strings_only, errors)     File "/usr/local/lib/python2.7/dist-packages/django/utils/encoding.py" in force_unicode       66.                 s = unicode(s)      Exception Type: TemplateSyntaxError at /admin/ps/ps/add/     Exception Value: Caught TypeError while rendering: coercing to Unicode: need string or buffer, NoneType found 
like image 606
Armance Avatar asked Apr 23 '13 12:04

Armance


1 Answers

This error happens when you have a __unicode__ method that is a returning a field that is not entered. Any blank field is None and Python cannot convert None, so you get the error.

In your case, the problem most likely is with the PCE model's __unicode__ method, specifically the field its returning.

You can prevent this by returning a default value:

def __unicode__(self):    return self.some_field or u'None' 
like image 139
Burhan Khalid Avatar answered Oct 02 '22 15:10

Burhan Khalid