如何在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
答案 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机器上)。