2014-03-06 49 views
0

更新#2我發現這個問題是:Django的BigIntegerField無法顯示隨着高清__unicode __(個體經營):

def __unicode__(self): 
    return self.thread_id 

我如何可以返回的thread_id數量管理面板中查看與thread_id = models.IntegerField(unique=True)


使用Django 1.6和Postgres,保存條目時,我得到:

TypeError at /admin/bot_data/threadvault/add/ 
'int' object has no attribute '__getitem__' 
Request Method: POST 
Request URL: http://10.14.213.69:8000/admin/bot_data/threadvault/add/ 
Django Version: 1.6.2 
Exception Type: TypeError 
Exception Value:  
'int' object has no attribute '__getitem__' 
Exception Location: /home/one/.virtualenvs/bot/local/lib/python2.7/site-pac 
kages/django/contrib/admin/models.py in log_action, line 19 
    Python Executable: /home/one/.virtualenvs/bot/bin/python 
    Python Version: 2.7.3 

這裏是我的models.py:

from django.db import models 
from django.contrib.auth import get_user_model 
from django.conf import settings 
from django.forms import ModelForm 

class UnassignedThread(models.Manager): 
    def get_queryset(self): 
     return super(UnassignedThread, 
       self).get_queryset().filter(
         user_irc_name__isnull=True) 

def user_unicode_patch(self): 
    return '%s %s' % (self.first_name, self.last_name) 

get_user_model().__unicode__ = user_unicode_patch 

class User(models.Model): 
    user_ldap = models.ForeignKey(settings.AUTH_USER_MODEL, 
      related_name='user_requester') 
    user_irc_name = models.CharField(max_length="25") 
    user_user_name = models.CharField(max_length="25") 

class ThreadVault(models.Model): 
    thread_id = models.BigIntegerField(unique=True) 
    url = models.CharField(max_length="200") 
    author_username = models.CharField(max_length="50") 
    author_name = models.CharField(max_length="50") 
    forum_id = models.CharField(max_length="50") 
    subject = models.CharField(max_length="200") 
    reply_count = models.CharField(max_length=("3")) 
    latest_post_date = models.CharField(max_length=("50")) 
    user_irc_name = models.ForeignKey(User, null=True, blank=True) 

    objects = models.Manager() 
    unassigned_threads = UnassignedThread() 

    def __unicode__(self): 
     return self.thread_id 

然而,如果我改變thread_id = models.BigIntegerField(unique=True)thread_id = models.CharField(unique=True,max_length="50")問題就消失了。我怎麼不能使用BigIntegerField,我怎麼才能使它工作?我寧願使用整數類型來快速查找。

更新:這裏是日誌輸出:

[06/Mar/2014 11:09:37] "GET /admin/jsi18n/ HTTP/1.1" 200 2372 
Internal Server Error: /admin/bot_data/threadvault/add/ 
Traceback (most recent call last): 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 114, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/contrib/admin/options.py", line 432, in wrapper 
    return self.admin_site.admin_view(view)(*args, **kwargs) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/utils/decorators.py", line 99, in _wrapped_view 
    response = view_func(request, *args, **kwargs) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/views/decorators/cache.py", line 52, in _wrapped_view_func 
    response = view_func(request, *args, **kwargs) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/contrib/admin/sites.py", line 198, in inner 
    return view(request, *args, **kwargs) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/utils/decorators.py", line 29, in _wrapper 
    return bound_func(*args, **kwargs) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/utils/decorators.py", line 99, in _wrapped_view 
    response = view_func(request, *args, **kwargs) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/utils/decorators.py", line 25, in bound_func 
    return func(self, *args2, **kwargs2) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/db/transaction.py", line 339, in inner 
    return func(*args, **kwargs) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/contrib/admin/options.py", line 1133, in add_view 
    self.log_addition(request, new_object) 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/contrib/admin/options.py", line 600, in log_addition 
    action_flag=ADDITION 
    File "/home/one/.virtualenvs/bot/local/lib/python2.7/site-packages/django/contrib/admin/models.py", line 19, in log_action 
    e = self.model(None, None, user_id, content_type_id, smart_text(object_id), object_repr[:200], action_flag, change_message) 
TypeError: 'int' object has no attribute '__getitem__' 
+1

您可以顯示'log_action'誤差被提?你也覆蓋任何保存,或者你只是調用'foobar.save()'? –

+0

這是從管理頁面,當我點擊保存。對於「線程ID」字段,我輸入了777。 – dman

回答

2

我必須轉換爲字符串第一:

def __unicode__(self): 
    return str(self.thread_id)