胁迫到Unicode:需要字符串或缓冲区,在django管理器中呈现时找到NoneType [英] coercing to Unicode: need string or buffer, NoneType found when rendering in django admin

查看:179
本文介绍了胁迫到Unicode:需要字符串或缓冲区,在django管理器中呈现时找到NoneType的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



在渲染时捕获TypeError:强制转换为Unicode:需要字符串或缓冲区,NoneType found



当我尝试在我的一个模型上添加或修改(显示效果很好)时,会发生在管理员中



这是模型:

 类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 = .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。过滤器(ps = self)[0]
除了IndexError:
return

def get_pce(self):
from pce.models import PCE
返回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')

在这里做错?



追溯:

 环境:

请求方法:GET
请求URL:http://127.0.0.1:8026/admin/ps/ps/add/
Django Ver sion:1.2.5
Python版本:2.7.2
已安装的应用程序:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.session',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
' easy_thumbnails',
'django_extensions',
'contentadmin',
'south',
'sentry',
'sentry.client',
' index',
'file_uploader',
'paging',
'pagination',
'consommation',
'ps',
'pce' ,
'profil',
'analytics',
'document']
安装的中间件:
('annoying.middlewares.StaticServe',
' django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfVi ewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'pagination.middleware.PaginationMiddleware')


模板错误:
在模板/usr/local/lib/python2.7/dist-packages/django/contrib/admin/templates/admin/includes/fieldset.html中,错误在线19
渲染时捕获TypeError:强制转换为Unicode:需要字符串或缓冲区,找到$ None
9:{%行中的字段%}


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'而不是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>


追溯:
文件/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py在get_response
100. response = callback(request,* callback_args,** callback_kwargs)
文件/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py中的wrapper
288. return self.admin_site.admin_view(view)(* args,** kwargs)
文件/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py in _wrapped_view
76. response = view_func(request,* args,** kwargs)
文件/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache .pyin _wrapped_view_func
78. response = view_func(request,* args,** kwargs)
文件/usr/local/lib/python2.7/dist-packages/django/contrib/admin /sites.pyin inner
190. return view(request,* args,** kwargs)
文件/usr/local/lib/python2.7/dist-packages/django /utils/decorators.pyin _wrapper
21. return decorator(bound_func)(* args,** kwargs)
文件/usr/local/lib/python2.7/dist-packages/django /utils/decorators.py_wrapped_view
76. response = view_func(request,* args,** kwargs)
文件/usr/local/lib/python2.7/dist-packages/django /utils/decorators.pyin bound_func
17. return func(self,* args2,** kwargs2)
文件/usr/local/lib/python2.7/dist-packages/django/ db / transaction.pyin _commit_on_success
299. res = func(* args,** kw)
文件/usr/local/lib/python2.7/dist-packages/django/contrib/ admin / options.pyin add_view
909. return self.render_change_form(request,context,form_url = form_url,add = True)
文件/usr/local/lib/python2.7/dist-在render_change_form
692.],context,context_instance = context_instance中的packages / django / contrib / admin / options.py
文件/usr/local/lib/python2.7/dist-packages/django/shortcuts/__init__.pyin render_to_response
20. return HttpResponse(loader.render_to_string(* args,** kwargs),** httpresponse_kwargs)
文件/usr/local/lib/python2.7/dist-packages/django/template/loader.py在render_to_string
186. return t.render(context_instance)
render
中的文件/usr/local/lib/python2.7/dist-packages/django/template/__init__.py173. return self._render(context)
文件/ usr / local /lib/python2.7/dist-packages/django/template/__init__.py在_render
167. return self.nodelist.render(context)
文件/ usr / local / lib / python2 .7 / dist-packages / django / template / __ init__.pyin render
796. bits.append(self.render_node(node,context))
文件/ usr / local / lib / python2 .7 / dist-packages / django / template / debug.py在render_node
72. result = node.render(context)
文件在render
125. return compile_parent._render(context)
文件中的/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py/ usr / local / lib / python2.7 / dist-packages / django / template / __ init__.pyin _render
167. return self.nodelist.render(context)
文件/ usr / local / lib / python2。 7 / dist-packages / django / template / __ init__.pyin render
796. bits.append(self.render_node(node,context))
文件/ usr / local / lib / python2 7 / dist-packages / django / template / debug.pyin render_node
72. result = node.render(context)
文件/usr/local/lib/python2.7/dist-packages /django/template/loader_tags.py在render
125. return compiled_pa​​rent._render(context)
文件/usr/local/lib/python2.7/dist-packages/django/template/__init__ .pyin _render
167. return self.nodelist.render(context)
文件/usr/local/lib/python2.7/dist-packages/django/ render / $ _ $ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ render_node
中的template / debug.py72.结果= node.render(上下文)
文件/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py in render
62. result = block.nodelist.render(context)
文件/usr/local/lib/python2.7/dist-packages/django/template/__init__.py在渲染中
796. bits.append(self.render_node(node,context))
文件/usr/local/lib/python2.7/dist-packages/django/template/debug.py在render_node中
72. result = node.render(context)
文件/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py在render
174 .nodelist.append(node.render(context))
文件/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py在render
139. return self.template.render(context)
文件/usr/local/lib/python2.7/dist-packages/django/template/__init__.py在render
173. return self._render(context)
文件/usr/local/lib/python2.7/dist-packages/django/template/__init__.py在_render
167. return self。 nodelist.render(上下文)
文件/usr/local/lib/python2.7/dist-packages/django/template/__init__.py在render
796. bits.append(self.render_node (node,context))
在render_node
中的文件/usr/local/lib/python2.7/dist-packages/django/template/debug.py72. result = node.render(context )
文件/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py在render
174. nodelist.append(node.render(context))
文件/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py在render
174. nodeli st.append(node.render(context))
文件/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py在render
260. return self .nodelist_false.render(上下文)
文件/usr/local/lib/python2.7/dist-packages/django/template/__init__.py在render
796. bits.append(self。 render_node(node,context))
render_node
中的文件/usr/local/lib/python2.7/dist-packages/django/template/debug.py72. result = node.render(上下文)
文件/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py在render
260. return self.nodelist_false.render(context)
文件/usr/local/lib/python2.7/dist-packages/django/template/__init__.py在render
796. bits.append(self.render_node(node,context))
文件/usr/local/lib/python2.7/dist-packages/django/template/debug.py在render_node
72. result = node.render (上下文)
文件/usr/local/lib/python2.7/dist-packages/django/template/debug.py在render
91. output = force_unicode(output)
文件/usr/local/lib/python2.7/dist-packages/django/utils/encoding.pyin force_unicode
66. s = unicode
文件/ usr / local / __unicode__
408.中的lib / python2.7 / dist-packages / django / forms / forms.py。return self.as_widget()
文件/usr/local/lib/python2.7/dist as_widget
450.packages / django / forms / forms.pyreturn widget.render(name,data,attrs = attrs)
文件/usr/local/lib/python2.7/dist render
247. output = [self.widget.render(name,value,* args,** kwargs)]
文件/ usr
447中的/local/lib/python2.7/dist-packages/django/forms/widgets.py。options = self.render_options(choices,[value])
文件/ usr / local / lib目录/ python2.7 / DIST-包/贾render_options
464中的ngo / forms / widgets.py。对于option_value,在chain(self.choices,choices)中的option_label:
文件/usr/local/lib/python2.7/dist-packages /django/forms/models.pyin __iter__
898. yield self.choice(obj)
文件/usr/local/lib/python2.7/dist-packages/django/forms/models .py在选择
904. return(self.field.prepare_value(obj),self.field.label_from_instance(obj))
文件/usr/local/lib/python2.7/dist- label_from_instance中的packages / django / forms / models.py
955. return smart_unicode(obj)
文件/usr/local/lib/python2.7/dist-packages/django/utils/encoding。 pyin smart_unicode
39. return force_unicode(s,encoding,strings_only,errors)
文件/usr/local/lib/python2.7/dist-packages/django/utils/encoding.py in force_unicode
66. s = unicode $ s

异常类型:/ admin / ps / ps / add / $中的TemplateSyntaxError b $ b异常值:渲染时捕获TypeError:强制到Unicode:需要字符串或缓冲区,找到$ None


解决方案

当您有一个返回未输入的字段的 __ unicode __ 方法时,会发生此错误。任何空白字段为,Python无法转换,所以您收到错误。



在您的情况下,最可能的问题是使用 PCE 模型的 __ unicode __ 特别是返回的字段。



您可以通过返回默认值来防止此情况:

 code> def __unicode __(self):
return unicode(self.some_field)或u''


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

解决方案

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 unicode(self.some_field) or u''

这篇关于胁迫到Unicode:需要字符串或缓冲区,在django管理器中呈现时找到NoneType的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆