0

Djangoの2つの異なるディレクトリでモデル宣言を行うにはどうすればよいですか?

「init.py」、「models.py」、「admin.py」含むコードディレクトリにモデルがあります。単独で正常に動作しています。

与えられた質問の改訂のモデルを含むディレクトリHistoryが欲しいです。ディレクトリに同様のファイルがあります。

他のディレクトリへの質問のテーブルにManyToManyの関係があるので、Djangoにディレクトリ「History」のモデルを使用するように指示する必要があります。

次のインポートエラーが発生します

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
4

3 に答える 3

2

INSTALLED_APPS両方のディレクトリが Django アプリのように聞こえるため、両方をリストに入れていると仮定するとsettings.py、インポートせずに文字列を使用してそれらを参照できます。

# in code/models.py

class Questions(models.Model):
    histories = models.ManyToManyField('history.MyHistoryModel')

パスは大文字と小文字が区別されることに注意してください...そのため、アプリが本当に「History」と呼ばれている場合は、「History.MyHistoryModel」を使用して参照する必要があります。

于 2009-12-11T22:11:22.113 に答える
0

通常、「models」ディレクトリは 1 つだけです。場合によっては、models ファイルが 1 つしかないこともあります。モデル用に 2 つの完全なディレクトリが必要だと感じた場合は、1 つのアプリをいくつかの小さなアプリに分割することを検討することをお勧めします。そうは言っても、私たちが見ることができないセットアップだけで潜在的に間違っている可能性があることがいくつかあります.

ただし、インポート エラーが発生するたびに、Python シェルにドロップしてアイテムをインポートしようとします。失敗した場合は、モジュールに何か問題があるか (私が __init__.py を忘れる頻度に驚かれることでしょう)、または Python パスに適切に配置されていません。

于 2009-12-11T22:10:40.753 に答える
0

ディレクトリの名前が History の場合、Python のインポートでは大文字と小文字が区別されるため (少なくとも私の Linux ボックスでは)、に変更import historyする必要があります。import History

于 2009-12-11T22:11:14.483 に答える