胁迫到Unicode:需要字符串或缓冲区,在django管理器中呈现时找到NoneType [英] coercing to Unicode: need string or buffer, NoneType found when rendering in django admin
问题描述
在渲染时捕获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_parent._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屋!