在Django中的两个文件夹中进行模型声明

时间:2009-12-11 22:00:22

标签: python django import models

如何在Django的两个不同目录中进行模型声明?

我的模型位于代码目录中,其中包含“ init .py”,“models.py”和“admin.py”。 它单独运作。

我希望目录历史记录具有给定问题的修订版本。我在目录中有类似的文件。

我需要告诉Django以某种方式在目录“History”中使用该模型,因为我在表中有一个ManyToMany关系到另一个目录。

我收到以下导入错误

ImportError at /

cannot import name history

Request Method:     GET
Request URL:    http://127.0.0.1:8000/
Exception Type:     ImportError
Exception Value:    

cannot import name history

Exception Location:     /home/noa/build/CML/../CML/codes/models.py in <module>, line 2
Python Executable:  /usr/bin/python
Python Version:     2.6.2
Python Path:    ['/home/noa/build/CML', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/var/lib/python-support/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/var/lib/python-support/python2.6/gtk-2.0', '/var/lib/python-support/python2.6/pyinotify', '/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode', '/usr/local/lib/python2.6/dist-packages']
Server time:    Fri, 11 Dec 2009 15:46:30 -0600

3 个答案:

答案 0 :(得分:2)

因为听起来你的两个目录都是Django应用程序,并假设你已将它们都放在INSTALLED_APPS的{​​{1}}列表中,你可以使用字符串引用它们而无需导入:

settings.py

请注意,路径区分大小写...因此,如果您的应用程序真正称为“历史记录”,则需要使用“History.MyHistoryModel”引用它。

答案 1 :(得分:0)

一般人们只有一个“模型”目录,甚至有时只有一个模型文件。如果你觉得你需要为你的模型提供2个完整目录,那么最好开始考虑将你的应用程序分解为几个小应用程序。话虽如此,我们无法看到您的设置可能会出现许多问题。

任何时候我都有导入错误,我会转到python shell并尝试导入该项目。如果它失败了,那么模块的某些内容是错误的(你会惊讶于我多久忘记__init__.py),或者它在你的python路径中没有正确。

答案 2 :(得分:0)

如果目录名为History,则应将import history更改为import History,因为python导入区分大小写(至少在我的Linux机器上)。