2016-03-24 18 views
3

我有一個Django項目,其中包含兩個功能應用程序。今天,在添加兩個新模型之後,我意識到我的一個應用程序已損壞。當我嘗試添加一個實例到任何模型時,我得到一個與數據類型相關的錯誤。當我嘗試在應用內創建任何模型的實例時,會發生這種情況。當我嘗試通過Django管理界面創建一個實例時,甚至發生這種情況!在管理界面中,我甚至無法刪除一個實例而沒有得到相同的錯誤。由於「脅迫Unicode」錯誤導致的所有模型創建實例

我複製下我的主要模型,以及追溯創建一個實例和在管理界面查看模型。

from django.db import models 
from django.template.defaultfilters import slugify 
from django.utils.translation import ugettext_lazy as _ 
from django.contrib.auth.models import User 
import datetime 

class DrukOrder(models.Model): 
    inkoop = models.CharField(max_length=16, default=0, unique=True) 
    order = models.IntegerField(default=0) 
    beschrijving = models.CharField(max_length=1024) 
    crediteur = models.IntegerField(default=0) 
    leverancier = models.CharField(max_length=1024, null=True) 
    medewerker = models.CharField(max_length=128, null=True) 

    besteldatum = models.DateField(null=True) 
    ontvangstdatum = models.DateField(null=True) 
    factuurdatum = models.DateField(null=True) 
    leverancierdatum = models.DateField(null=True) 
    oorspronkelijkedatum = models.DateField(null=True) 

    klant = models.CharField(max_length=1024, null=True) 
    kleuren = models.IntegerField(null=True) 
    rolbreedte = models.DecimalField(max_digits=5, decimal_places=2, default=0) 
    leveringweek = models.IntegerField(null=True) 
    materiaal = models.CharField(max_length=1024, null=True) 
    offerte = models.CharField(max_length=1024, null=True) 
    vrijetekst = models.CharField(max_length=2048, null=True) 

    datum = models.DateTimeField(auto_now=True, null=True) 
    user = models.ForeignKey(User, null=True) 
    aanmaakdatum = models.DateTimeField(null=True) 
    wijzigingdatum = models.DateTimeField(null=True) 
    status = models.CharField(max_length=128, null=True) 
    actief = models.BooleanField(default=True) 
    slug = models.SlugField(null=True) 

    class Meta: 
     unique_together = ('order', 'crediteur',) 

    def save(self, *args, **kwargs): 
     self.slug = slugify(self.inkoop) 
     super(DrukOrder, self).save(*args, **kwargs) 

    def __unicode__(self): 
     return self.id 

回溯在管理界面加載模型:

Environment: 


Request Method: GET 
Request URL: http://pim.local:8000/admin/pam/drukorder/ 

Django Version: 1.8 
Python Version: 2.7.6 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.humanize', 
'registration', 
'bootstrap3_datetime', 
'pim', 
'pam') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware') 


Template error: 
In template /home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list.html, error at line 91 
    coercing to Unicode: need string or buffer, int found 

    81 :   {% endif %} 



    82 :  {% endblock %} 



    83 : 



    84 :  <form id="changelist-form" action="" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %} novalidate>{% csrf_token %} 



    85 :  {% if cl.formset %} 



    86 :   <div>{{ cl.formset.management_form }}</div> 



    87 :  {% endif %} 



    88 : 



    89 :  {% block result_list %} 



    90 :   {% if action_form and actions_on_top and cl.show_admin_actions %}{% admin_actions %}{% endif %} 



    91 :   {% result_list cl %} 



    92 :   {% if action_form and actions_on_bottom and cl.show_admin_actions %}{% admin_actions %}{% endif %} 



    93 :  {% endblock %} 



    94 :  {% block pagination %}{% pagination cl %}{% endblock %} 



    95 :  </form> 



    96 :  </div> 



    97 : </div> 



    98 : {% endblock %} 



    99 : 

Traceback: 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    164.     response = response.render() 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/response.py" in render 
    158.    self.content = self.rendered_content 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/response.py" in rendered_content 
    135.   content = template.render(context, self._request) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/backends/django.py" in render 
    74.   return self.template.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in render 
    209.      return self._render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in _render 
    201.   return self.nodelist.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in render 
    903.     bit = self.render_node(node, context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    79.    return node.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    135.   return compiled_parent._render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in _render 
    201.   return self.nodelist.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in render 
    903.     bit = self.render_node(node, context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    79.    return node.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    135.   return compiled_parent._render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in _render 
    201.   return self.nodelist.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in render 
    903.     bit = self.render_node(node, context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    79.    return node.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    65.     result = block.nodelist.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in render 
    903.     bit = self.render_node(node, context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    79.    return node.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    65.     result = block.nodelist.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in render 
    903.     bit = self.render_node(node, context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    79.    return node.render(context) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/template/base.py" in render 
    1271.      _dict = func(*resolved_args, **resolved_kwargs) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in result_list 
    320.    'results': list(results(cl))} 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in results 
    296.    yield ResultList(None, items_for_result(cl, res, None)) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in __init__ 
    287.   super(ResultList, self).__init__(*items) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in items_for_result 
    199.    f, attr, value = lookup_field(field_name, result, cl.model_admin) 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/contrib/admin/utils.py" in lookup_field 
    282.     value = attr() 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/db/models/base.py" in __str__ 
    503.    return force_text(self).encode('utf-8') 
File "/home/administrator/.virtualenvs/pim/local/lib/python2.7/site-packages/django/utils/encoding.py" in force_text 
    92.     s = six.text_type(s) 

Exception Type: TypeError at /admin/pam/drukorder/ 
Exception Value: coercing to Unicode: need string or buffer, int found 

和創建主模型的實例時出現錯誤:

TypeError: coercing to Unicode: need string or buffer, int found 

我對這個突如其來的真的很驚訝更改,並且它隻影響其中一個應用的所有模型。我刪除了新模型,並刪除了所有模型中的所有以前的實例。創建新實例仍然失敗,加載管理界面仍然失敗。我應該從哪裏開始解決這個問題?

回答

3

__unicode__方法應該返回一個Unicode字符串,而不是一個整數。

def __unicode__(self): 
    return unicode(self.id) 
+0

嗨馬克,感謝您的回答。因爲我已經改變了我的問題,以顯示我的主要模型受到影響,我最擔心的。在我現在共享的模型中,「self」不是「CharField」(因此是Unicode)? – marckr

+1

在'__unicode__'方法中,'self'是模型實例,'self.id'是它的主鍵的值,它是一個整數。 – Alasdair

+0

這是如此明顯的錯誤,但長期盯着它仍然沒有讓我看到我做錯了什麼。謝謝你的幫助! – marckr

相關問題