当我使用Django shell时,它显示错误; 这是错误:
>>> from django.db import models
>>> class Poll(models.Model):
... question = models.CharField(max_length=200)
... pub_date = models.DateTimeField('date published')
...
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "D:\Python25\lib\site-packages\django\db\models\base.py", line 51, in __new__
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
我能做什么?
Chr*_*gan 45
该模型定义必须进来的应用程序-你看到那里的错误是,它试图走__name__ model_module-这应该是这样project.appname.models的project\appname\models.py-并获得应用程序的名称,appname.在交互式控制台中,模块__name__是'__main__'- 所以它失败了.
要解决这个问题,你需要app_label在Meta课堂上指定自己;
>>> from django.db import models
>>> class Poll(models.Model):
... question = models.CharField(max_length=200)
... pub_date = models.DateTimeField('date published')
... class Meta:
... app_label = 'test'
Run Code Online (Sandbox Code Playgroud)
有关可以执行此操作的原因的说明,请查看traceback中提到的文件D:\Python25\lib\site-packages\django\db\models\base.py:
if getattr(meta, 'app_label', None) is None:
# Figure out the app_label by looking one level up.
# For 'django.contrib.sites.models', this would be 'sites'.
model_module = sys.modules[new_class.__module__]
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
else:
kwargs = {}
Run Code Online (Sandbox Code Playgroud)
(meta该Meta课程在哪里,请参阅该文件中的上方.)
| 归档时间: |
|
| 查看次数: |
8297 次 |
| 最近记录: |