2013-03-01 148 views
4

此模型post。在admin.py:預期字符緩衝區對象

class GroupsAdmin(admin.ModelAdmin): 

    fieldsets = [ 
     (None,    {'fields': ['first_year', 'many other']}), 

    ] 

因此,在這種管理部分,我可以添加first_year的特殊系列轎車。我按「+」,然後打開一個新窗口 - 我可以在這裏添加年份。我添加「2011」,按「保存」,看到錯誤:

TypeError: expected a character buffer object. 

它很奇怪,因爲它在上週工作。它如何修復?如果我去first_yearAdmin,並添加一年,它的工作原理沒有錯誤。

謝謝。

編輯。回溯:

Environment: 


Request Method: POST 
Request URL: http://127.0.0.1:8000/admin/cars/first_year/add/?_popup=1 

Django Version: 1.5 
Python Version: 2.7.3 
Installed Applications: 
('django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.sitemaps', 
'cars', 
'django_evolution', 
'django.contrib.admin') 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 
    115.       response = callback(request, *callback_args, **callback_kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in wrapper 
    372.     return self.admin_site.admin_view(view)(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view 
    91.      response = view_func(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    89.   response = view_func(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in inner 
    202.    return view(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper 
    25.    return bound_func(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view 
    91.      response = view_func(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func 
    21.     return func(self, *args2, **kwargs2) 
File "/usr/local/lib/python2.7/dist-packages/django/db/transaction.py" in inner 
    223.     return func(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in add_view 
    1010.     return self.response_add(request, new_object) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in response_add 
    833.     (escape(pk_value), escapejs(obj))) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py" in wrapper 
    194.    return func(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/html.py" in escapejs 
    65.  return mark_safe(force_text(value).translate(_js_escapes)) 

Exception Type: TypeError at /admin/cars/first_year/add/ 
Exception Value: expected a character buffer object 

模式

class Mark(models.Model): 
    many_many_char_fields 
    def __unicode__(self): 
     return self.name 

class First_Year(models.Model): 
    year = models.IntegerField() 
    def __unicode__(self): 
     return str(self.year) 

class Groups(models.Model): 
     many_other_fields 
    mark = models.ForeignKey(Mark, related_name='groups') 
    last_update = models.DateTimeField() 
    first_year = models.ForeignKey(First_Year, related_name='first_year') 
    def __unicode__(self): 
     return self.name 
    def altered_date(self, year): 
     altered_year = int(year)-int(self.first_year.year) 
     return altered_year 
+0

你能顯示完整回溯? – 2013-03-01 16:50:10

+0

我有更新帖子 – tim 2013-03-01 17:01:55

+0

{'fields':['first_year','many other'],}), – catherine 2013-03-02 01:11:38

回答

2
class First_Year(models.Model): 
    year = models.CharField(max_length=4) 
    def __unicode__(self): 
     return self.year 
0

你忘了這

class GroupsAdmin(admin.ModelAdmin): 
    model = Groups 
+0

中迴歸的同樣的錯誤。 – tim 2013-03-01 16:56:44

+0

我不確定,但我認爲字段鍵必須接收列表或元組列表,所以,您必須這樣做:'{'fields':['first_year','many other']] ,}'在字典 – 2013-03-01 16:59:38

+0

和同樣的錯誤後面加上一個逗號)它非常奇怪 – tim 2013-03-01 17:05:40

9

其實,這是沒有必要的year場改造成Charfield,如果你想保持整數,因爲在許多情況下,你不可能在你r最終需要一個號碼。這個1.5的bug的解決方法是使__unicode__函數返回Unicode字符串:

class First_Year(models.Model): 
    year = models.IntegerField() 

    def __unicode__(self): 
     return unicode(self.year) 
相關問題