【问题标题】:why 'list index out of range' in my django code;为什么在我的 django 代码中“列出索引超出范围”;
【发布时间】:2010-02-06 02:07:19
【问题描述】:

IndexError: 列表索引超出范围

这是我的 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

【问题讨论】:

    标签: python django


    【解决方案1】:

    您需要将Meta.app_label 设置为可用的值。

    【讨论】:

    • 如何设置??像这样:class Meta: app_label = sphinx_test
    • 嗨,没关系,当我运行我的代码时,它什么也不打印,我想知道我的数据库发生了什么(它的名字是'test')
    • 因为,我发现“测试”数据库没有创建任何表
    • ...您的代码不包含任何用于创建任何表的调用,所以我对没有发生任何事情并不感到惊讶。
    【解决方案2】:

    这很奇怪,这部分代码只是用来确定您的应用名称。请参阅第 45 行的 here 部分。您的应用名称是什么?

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

    【讨论】:

    • 没有应用;这是一个独立的脚本。
    • 谢谢...这解释了为什么 Django 找不到我猜的应用名称!
    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多