如何在test中设置app_label

时间:2014-11-08 20:45:04

标签: django python-3.x

我正在浏览一个基本的Django网页和一个应用程序的在线教程。

到目前为止,我做的第一件也是唯一的事情是使用sqllite数据库创建项目和单个应用程序。

我已将应用正确添加到settings.py文件中。

在应用models.py内,我定义了一个模型。

makemigrations命令已成功为模型创建数据库。

在创建模型类之后,我尝试编写以下测试脚本来测试模型的构造函数。此脚本与models.py处于同一级别的app目录中。

from django.test import TestCase
from models import Foodie # the model
import os

# Create your tests here.
class TestModel(unittest.TestCase):
    def test_foodie(self):
        tc = Foodie()

if __name__ == '__main__':  
    unittest.main()

我收到错误:

builtins.IndexError: list index out of range
File "C:\WebDev\DinnerServer\Rolls\tests.py", line 2, in <module>
from models import Foodie
File "C:\WebDev\DinnerServer\Rolls\models.py", line 7, in <module>
class Foodie(models.Model):
File "C:\Python33\Lib\site-packages\Django-1.7.1-py3.3.egg\django\db\models\base.py", line 116, in >__new__
kwargs = {"app_label": package_components[app_label_index]}

(模型所在的应用标题为Rolls) 如何或为何失败,如何设置单元测试的app_label?

2 个答案:

答案 0 :(得分:1)

基本错误,导入语句错误。

应该是......来自Rolls.models

答案 1 :(得分:-1)

您需要在def __str__(self):中的Foodie模型中添加models.py

class Foodie(models.Model):
    #some fields

    def __str__(self):
        # you access to model fiels here 
        return self.label

另请参阅doc可能对您有帮助。