2014-12-21 2 views
2

장고 자습서를 통해 작업합니다.Django def __str__ 목록 색인이 범위를 벗어남

파이썬 3.4 장고 1.7

"잠깐만 요., 완전히,이 개체의 도움이되지 않는 표현. 이제 해결 해보자된다 (투표/models.py 파일) 질문 모델을 편집하고 추가하여 두 질문 및 선택에 STR() 메소드 : "

>>> from django.db import models 
>>> class Question(models.Model): 
...  def __str__(self): 
...    return self.question_text 
... 
Traceback (most recent call last): 
File "<console>", line 1, in <module> 
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/models/base.py", line 117, in __new__ 
kwargs = {"app_label": package_components[app_label_index]} 
IndexError: list index out of range 

그리고 나뿐만 아니라 시도하고 편집 클래스 선택 (models.Model) 때 나는이 같은 오류가 발생합니다. 이것으로 충분한 정보를 얻길 바랍니다. 제가 포함시켜야 할 다른 정보를 알려주십시오.

답변

1

Django는 모델 to be created in specific places (일반적으로 models.py)을 기대합니다. 이를 통해 the app_label meta field을 자동으로 생성 할 수 있습니다. 장고가 있어야 할 위치를 추측하지 않도록

from django.db import models 

class Question(models.Model): 
    class Meta: 
     app_label = "something" 

    def __str__(self): 
     return self.question_text 

인터프리터 내에서 모델을 생성하기 때문에, 당신은 당신의 자신의 app_label 메타 필드를 설정해야합니다. 인터프리터 외부에서 모델을 설정하는 것도 고려해 볼 수 있습니다. 모델이 구체적인 모듈 내에 있고 기존 테이블을 참조하기 때문입니다.

기존 테이블에 대한 모델을 생성하려는 경우 the db_table meta field도 설정해야합니다. 장고는 자동으로 테이블 이름을 생성 할 것이고, 기존 이름과 일치하지 않을 가능성이 높습니다.

0

귀하의 excepton는 /django/db/models/base.py에 던져 내가

얇은 코드를 살펴보면 나는 당신의 메타에 app_label = 'yourappname'를 설정하면 문제를 해결할 것이라고 생각한다.

관련 문제