2010-02-06 24 views
1

IndexError:列表索引超出范围为什么我的django代码中'列表索引超出范围';

这是我的Django代码:

import os 
os.environ["DJANGO_SETTINGS_MODULE"] = "sphinx_test.settings" 

#from django.core.management import setup_environ 
#from sphinx_test import settings 

#setup_environ(settings) 


from django.db import models 
from djangosphinx.models import SphinxSearch,SphinxQuerySet 




class File(models.Model): 
    name = models.CharField(max_length=200) 
    tags = models.CharField(max_length=200) 

    objects = models.Manager() 
    search = SphinxQuerySet(index="test1") 


import datetime 



class Group(models.Model): 
    name = models.CharField(max_length=32) 

class Document(models.Model): 
    group  = models.ForeignKey(Group) 
    date_added = models.DateTimeField(default=datetime.datetime.now) 
    title  = models.CharField(max_length=32) 
    content  = models.TextField() 

    search  = SphinxQuerySet(File,index="test1") 

    class Meta: 
     db_table = 'documents' 

Traceback (most recent call last): 
    File "D:\zjm_code\sphinx_test\models.py", line 16, in <module> 
    class File(models.Model): 
    File "D:\Python25\Lib\site-packages\django\db\models\base.py", line 52, in __new__ 
    kwargs = {"app_label": model_module.__name__.split('.')[-2]} 
IndexError: list index out of range 

回答

3

您需要设置Meta.app_label为有用的东西。

+0

如何设置它??像这样: class Meta: app_label = sphinx_test – zjm1126 2010-02-06 02:25:49

+0

在模型类中,是的。 – 2010-02-06 02:27:34

+0

嗨,没关系,当我运行我的代码时,它什么也没有打印,我想知道我的数据库上发生了什么(它的名字是'test') – zjm1126 2010-02-06 02:35:15

1

这很奇怪,代码的那部分只是应该确定你的应用程序名称。请参阅第here起始行45.您的应用程序名称是什么?

您可以通过在模型的Meta部分中将app_label设置为应用程序的名称来避免该错误。

+0

没有应用程序;它是一个独立的脚本。 – 2010-02-06 02:17:23

+0

谢谢...这解释了为什么Django无法找到我猜的应用程序名称! – JAL 2010-02-06 02:30:03

相关问题