完成Django教程。
Python 3.4 Django 1.7
“等一下。完全是这个对象的无用表示。让我们通过编辑问题模型(在polls / 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
然后,当我尝试编辑类Choice(models.Model)时,我收到了同样的错误。我希望这能为您提供足够的信息。让我知道我应该包括哪些其他信息。
答案 0 :(得分: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
元字段,因此Django不必猜测它应该在哪里。您可能还需要考虑在解释器之外设置模型,因为它们应位于具体模块中并引用现有表。
如果您尝试为现有表格生成模型,则还应设置the db_table
meta field。 Django将自动生成一个表名,它很可能不会与现有名称匹配。
答案 1 :(得分:0)
/django/db/models/base.py
中我的异常被抛出
通过查看代码,我猜您的Meta中的app_label = 'yourappname'
设置可以解决您的问题。