2011-09-20 36 views
2

我越来越想使用管理界面保存到下面的模型时的错误:Django的增加从管理界面数据时:在管理类型错误/ ... unicode的对象不是可调用

models.py

class Answer(models.Model): 
a = models.TextField(primary_key=True) 
gloss = models.TextField(blank=True) 
clean = models.TextField(blank=True) 
count = models.IntegerField(blank=True) 
p = models.IntegerField(blank=True)  
def __unicode__(self): 
    return u"%s" % self.a  
class Meta:          
    db_table = u'answers'       

这里的,显示了管理界面上的错误信息:

Environment: 


Request Method: POST 
Request URL: http://localhost:8000/admin/emotions/answer/add/ 

Django Version: 1.4 pre-alpha SVN-16322 
Python Version: 2.6.2 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'emo20qBrowser.emotions'] 
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 "/home/abe/bin/django-trunk/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args,  **callback_kwargs) 
File "/home/abe/bin/django-trunk/django/contrib/admin/options.py" in wrapper 
    316.     return self.admin_site.admin_view(view)(*args, **kwargs) 
File "/home/abe/bin/django-trunk/django/utils/decorators.py" in _wrapped_view 
    91.      response = view_func(request, *args, **kwargs) 
File "/home/abe/bin/django-trunk/django/views/decorators/cache.py" in _wrapped_view_func 
    77.   response = view_func(request, *args, **kwargs) 
File "/home/abe/bin/django-trunk/django/contrib/admin/sites.py" in inner 
    196.    return view(request, *args, **kwargs) 
File "/home/abe/bin/django-trunk/django/utils/decorators.py" in _wrapper 
    25.    return bound_func(*args, **kwargs) 
File "/home/abe/bin/django-trunk/django/utils/decorators.py" in _wrapped_view 
    91.      response = view_func(request, *args, **kwargs) 
File "/home/abe/bin/django-trunk/django/utils/decorators.py" in bound_func 
    21.     return func(self, *args2, **kwargs2) 
File "/home/abe/bin/django-trunk/django/db/transaction.py" in inner 
    211.     return func(*args, **kwargs) 
File "/home/abe/bin/django-trunk/django/contrib/admin/options.py" in add_view 
    871.    if form.is_valid(): 
File "/home/abe/bin/django-trunk/django/forms/forms.py" in is_valid 
    121.   return self.is_bound and not bool(self.errors) 
File "/home/abe/bin/django-trunk/django/forms/forms.py" in _get_errors 
    112.    self.full_clean() 
File "/home/abe/bin/django-trunk/django/forms/forms.py" in full_clean 
    269.   self._post_clean() 
File "/home/abe/bin/django-trunk/django/forms/models.py" in _post_clean 
    331.    self.instance.clean() 

Exception Type: TypeError at /admin/emotions/answer/add/ 
Exception Value: 'unicode' object is not callable 

回答

2

好吧,我想我想通了......我使用所谓的“干净”的变量/列。 Django的管理界面也有一个名为“clean()”的方法,它进行某种验证。它似乎有某种命名冲突,所以我将变量更名为“清理”,然后确保它知道要使用的数据库字段(我使用的是旧版/预先存在的数据库),我添加了一个db_column选项:

cleaned = models.TextField(blank=True,db_column="clean") 

这本来是很高兴知道,“干净”是在Django的保留标识符,但至少我只是浪费了半天时间在这个Django的东西,这显然是使数据库操作更容易。公平起见,我今天早上刚开始django,如果我能找到并在stackoverflow上回答,它将是一件轻而易举的解决。

如果有人知道一个更好的方式来处理这个问题,请让我知道...

+1

无赖......这是令人沮丧的。以下是显示模型的属性/方法等的文档页面:https://docs.djangoproject.com/en/1.3/ref/models/instances/ – Aaron