如何决定如何将Django项目拆分为应用程序

Jas*_*ett 25 django

我有一个用PHP/symfony编写的项目,它使用了45个表.我正在将它移植到Python/Django.

多年来我一直认为你应该将你的项目分成一堆小文件而不是一些大文件.据我所知,相信并不奇怪.在Rails和symfony中,有一个单模型的文件约定.然而,在Django中,似乎大多数开发人员将每个应用程序的模型都放在一个文件中.

如果你的应用程序足够小,这对我来说很有意义.但是,对于大型应用程序,我没有任何意义,而且我拥有的是至少一个大型应用程序.

在我的项目使用的45个表中,35个密切相关.我有一个从CSV文件导入数据的脚本.对于每个CSV文件中的每一行,我一次性将50-80个数据保存到30-35个不同的表中.

也许我只是想错误的方式,但是当我的项目几乎所有表格都有着千丝万缕的联系时,将我的项目划分为6或7个不同的应用程序似乎非常奇怪.当我触摸一张桌子时,我触摸了所有35张桌子.划分必须是任意的.那会是什么意思?

请原谅我,如果我有偏见,因为我当然有偏见.我在symfony中没有这个问题,我不会在Rails中使用它.(因为GeoDjango和Python的GIS功能,我选择了Django.)

  • 在一个完美的世界里,每个文件我会有一个模型.
  • 如果我尝试每个文件有一个模型,我会得到循环引用问题.
  • 我可以通过将所有模型放在一个文件中来避免循环引用问题,但这对我来说是错误的.
  • 我可以通过将它们分成不同的应用程序来避免将我的所有模型放在同一个文件中,但为了最终得到足够小的应用程序,我必须以任意(因而无意义)的方式分解我的项目.

我该怎么办?

Yuj*_*ita 4

如果每个文件一个模型是您的完美答案,那么有一个应用程序可以满足您的需求。

我从来没有在 80 个模型文件的规模上完成过,但我当然可以向您指出另一个堆栈问题:
About 20 models in 1 django app

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

顺便问一下,您遇到了什么样的循环引用问题?如果使用外键定义,这里有一种解决方法... http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey

您也可以查看django.db.loading.get_model,但有些人可能对此不以为然。