2012-01-13 4 views
0

: 나는 admin.autodiscover()을 주석 경우이 오류가 발생하지 않습니다'str을'객체가 나는 admin.autodiscover 주석을 제거 할 때 오류가 올 '_meta'에는 속성이 없습니다() 나는 장고에서이 오류에 직면하고있다

AttributeError at/
'str' object has no attribute '_meta' 
Request Method: GET 
Request URL: http://localhost:8000/ 
Django Version: 1.3 
Exception Type: AttributeError 
Exception Value:  
'str' object has no attribute '_meta' 
Exception Location: C:\Python27\lib\site-packages\django\contrib\admin\sites.py in   register, line 80 
Python Executable: C:\Python27\python.exe 
Python Version: 2.7.2 
Python Path: ['D:\\programming\\django_projects\\ecomstore', 
'C:\\Python27\\lib\\site-packages\\setuptools-0.6c9-py2.7.egg', 
'C:\\Python27\\lib\\site-packages\\pymysql-0.3-py2.6.egg', 
'C:\\Windows\\system32\\python27.zip', 
'C:\\Python27\\DLLs', 
'C:\\Python27\\lib', 
'C:\\Python27\\lib\\plat-win', 
'C:\\Python27\\lib\\lib-tk', 
'C:\\Python27', 
'C:\\Python27\\lib\\site-packages', 
'C:\\Python27\\lib\\site-packages\\PIL'] 
Server time: Fri, 13 Jan 2012 16:44:18 +0500 

을, 또한 나는 ModelForm 때문에 장고에서 ModelForm을 사용했기 때문에 그렇습니까? 다음은 ModelForm 코드입니다.

from django import forms 
from catalog.models import Product 

class ProductAdminForm(forms.ModelForm): 
    class Meta: 
    model=Product 
    def clean_price(self): 
     if self.cleaned_data['price']<=0: 
      raise forms.ValidationError('Price must be greater than zero') 
     return self.cleaned_data['price'] 

따라서 어떤 사람이 문제를 이해한다면 알려주십시오.

은, 역 추적 붙여 태그 :

admin.site.register('Product', 'ProductAdmin') 

당신은 클래스의 객체가 아닌 문자열을 전달해야한다 :

Environment: 


Request Method: GET 
Request URL: http://localhost:8000/ 

Django Version: 1.3 
Python Version: 2.7.2 
Installed Applications: 
['django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.admin', 
    'ecomstore.catalog'] 
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 "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
101.        request.path_info) 
File "C:\Python27\lib\site-packages\django\core\urlresolvers.py" in resolve 
250.    for pattern in self.url_patterns: 
File "C:\Python27\lib\site-packages\django\core\urlresolvers.py" in _get_url_patterns 
279.   patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
File "C:\Python27\lib\site-packages\django\core\urlresolvers.py" in _get_urlconf_module 
274.    self._urlconf_module = import_module(self.urlconf_name) 
File "C:\Python27\lib\site-packages\django\utils\importlib.py" in import_module 
35.  __import__(name) 
File "D:\programming\django_projects\ecomstore\..\ecomstore\urls.py" in <module> 
5. admin.autodiscover() 
File "C:\Python27\lib\site-packages\django\contrib\admin\__init__.py" in autodiscover 
26.    import_module('%s.admin' % app) 
File "C:\Python27\lib\site-packages\django\utils\importlib.py" in import_module 
35.  __import__(name) 
    File "D:\programming\django_projects\ecomstore\..\ecomstore\catalog\admin.py" in <module> 
19. admin.site.register('Product', 'ProductAdmin') 
File "C:\Python27\lib\site-packages\django\contrib\admin\sites.py" in register 
80.    if model._meta.abstract: 

Exception Type: AttributeError at/
Exception Value: 'str' object has no attribute '_meta' 
+1

전체 추적은 정말 도움이 될 것입니다. 어딘가에 클래스 객체 대신 첫 번째 인수로 admin.site.register()를 호출하지만 TB가없는 곳을 말할 수는 없습니다. – AdamKG

+0

또한 붙여 넣기 된 clean_price가 ProductAdminForm 대신 Meta 서브 클래스의 메소드이기 때문에 ProductAdminForm의 들여 쓰기가 엉망입니다.하지만 복사/붙여 넣기 문제 일 수 있으며 AttributeError가 발생하지 않을 수도 있습니다. – AdamKG

+0

@ AdamKG : yah 그냥 복사 붙여 넣기 문제 및 stackoverflow 편집기에서 서식을, 또한 추적이 추가되었습니다 – Hafiz

답변

6

문제는이 라인입니다. 이게 작동해야합니다 :

admin.site.register(Product, ProductAdmin) 
관련 문제