在Django中,可以将两个不同应用程序的模型相互依赖吗?

In Django is it okay to have models of two different apps dependent of each other?

我正在从头开始开发一个计费和会计应用程序,其中我创建了两个不同的应用程序,分别是:

  • 计费:这个应用程序存储所有与计费相关的逻辑,例如订阅计划、产品、优惠券和类似的东西。
  • 账户:这个应用程序保存会计数据,例如:客户账户、交易等。
  • 现在我有一个问题,我需要在以下情况下将它们联系起来:

  • 客户订阅的计划(计费应用程序中)(帐户应用程序中)
  • 客户购买的产品(计费应用程序中)(帐户应用程序中)
  • 客户(账户内应用程序)发票(账单内应用程序)
  • 客户申请/兑换的优惠券(计费应用程序中)(计费应用程序中)
  • 我试过在这些应用程序的模型中使用外键,但它看起来非常粗糙和糟糕。

    我不确定我是否应该把所有的模型都放在相同的位置上;我想让有见识的人对我的设计进行一次回顾,这样我才能知道更好的方法是什么。


    很好。为了避免导入循环,可以使用字符串定义;

    模块"foo/models.py"

    1
    2
    class Foo(models.Model):
        bar = models.ForeignKey('bar.Bar')  # no explicit import statement required

    模块"bar/models.py"

    1
    2
    class Bar(models.Model):
        foo = models.ForeignKey('foo.Foo')

    真正的问题是你的结构是否使事情更直观?如果您不确定为什么需要拆分依赖的代码片段,请不要这样做。

    相关主题:Django中业务逻辑与数据访问的分离