Django def __str__列表索引超出范围

时间:2014-12-21 17:30:38

标签: python django string

完成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)时,我收到了同样的错误。我希望这能为您提供足够的信息。让我知道我应该包括哪些其他信息。

2 个答案:

答案 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'设置可以解决您的问题。