【问题标题】:Django: need help with keeping apps from depending on one anotherDjango:需要帮助以防止应用程序相互依赖
【发布时间】:2011-02-22 10:45:43
【问题描述】:

我正在开发一个网站,该网站将帮助私人教师管理学生,其中一部分将跟踪教师的欠款。

我希望我的应用程序可以重复使用并且不相互依赖。所以,我创建了一个应用程序,其职责是学生、教师和父对象的 CRUD(这些模型都有一个外键用户,所以它们就像一个用户配置文件,但我没有使用内置用户档案系统)。还有一个家庭模型将学生对象与父对象相关联。我还创建了一个单独的应用程序,其职责是管理帐户、发票和行项目。

我的问题在于两者的融合。我在帐户应用程序中有一个基本模板,该模板由一个通用视图提供支持,其中列出了帐户对象及其余额。我想要在该模板中做的是按家庭对帐户进行分组,并显示属于给定家庭的所有帐户的总数。

如何在避免应用相互依赖的同时做到这一点?

【问题讨论】:

  • 问题只是保持应用模板独立吗?或者这是一个关于可重用应用程序的更普遍的问题。
  • @John Debs 后者。我有一个想法,即创建一个 AccountGroup 类,该类与 Account 具有多对多,并且还设置了一个通用外键,这基本上意味着可以根据它们在另一个应用程序中可能具有的任何共同数据将帐户组合在一起。您认为这是一个好方法吗?

标签: django reusability


【解决方案1】:

这是我到目前为止似乎正在工作的内容:

class AccountGroup(models.Model):
    accounts = models.ManyToManyField(Account)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

记录在案的here。通过这种方式,帐户可以按照它们在外部应用程序中的任何共同点进行分组。在我的例子中,当我创建一个帐户组时,我将 content_type 设置为 family,并将 object_id 设置为它应该分组的特定家庭实例。该视图是一个简单的包装通用视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2013-03-25
    • 1970-01-01
    相关资源
    最近更新 更多