2011-02-04 30 views
25

我有一個項目,我使用45個表格在PHP/symfony中編寫。我正在將它移植到Python/Django。如何決定如何將你的Django項目分解爲應用程序

有一種信念我已經持續多年,你應該把你的項目分成一堆小文件而不是幾個大文件。據我所知,這不是一個相信的事情。在Rails和symfony中,每個文件都有一個模型。然而,在Django中,似乎大多數開發人員將每個應用程序的所有模型放在一個文件中。

如果您的應用程序足夠小,這對我來說很有意義。儘管如此,我對大型應用程序沒有任何意義,我所擁有的至少是一個大型應用程序。

在我的項目使用的45個表中,35個密切相關。我有一個從CSV文件導入數據的腳本。對於每個CSV文件中的每一行,我一次將50-80個數據保存到30-35個不同的表中。

也許我只是想對這個錯誤的方式,但它似乎令人難以置信的奇怪我到我的項目分成6級或7個不同的應用程序時,幾乎所有的表都有着千絲萬縷的聯繫。當我碰到一張桌子時,我碰到了所有35張桌子。劃定必須是任意的。那會是什麼意思?

請原諒我,如果我偏離了偏見,因爲我肯定是有偏見的。我在symfony中沒有這個問題,我不會在Rails中使用它。 (因爲GeoDjango和Python的GIS功能,我選擇了Django。)

  • 在一個完美的世界中,每個文件都有一個模型。
  • 如果我試圖爲每個文件創建一個模型,我會收到循環引用問題。
  • 我能避免循環引用問題,通過把我的所有車型在一個文件中,但是,感覺我錯了。
  • 我能避免把我所有的車型在同一文件中他們的分裂成不同的應用程式,但爲了與足夠小的應用程序結束後,我不得不打破了我的項目在任意(因此毫無意義)的方式。

我該怎麼辦?

回答

4

如果每個文件有一個模型將是您的最佳答案,那麼有一個應用程序。

我從來沒有做過它的80個模型文件的規模,但我可以肯定的一點,你對另一組問題:
About 20 models in 1 django app

http://djangosnippets.org/snippets/1838/

你具有什麼樣的循環引用問題方式?如果它與ForeignKey的定義,這裏周圍的一種方式...... http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey

您也可以看看django.db.loading.get_model,但有些人可能不贊成這個。

相關問題