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

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

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

  1. 计费:例如,此应用存储所有与计费相关的逻辑;订阅计划、产品、优惠券和类似的东西。
  2. 账户:此应用保存会计数据,例如:客户账户、交易等

现在我有一个问题,我需要在以下情况下将它们联系起来:

  1. 客户(在帐户应用程序中)订阅的计划(在计费应用程序中)
  2. 客户(在帐户应用程序中)购买的产品(在结算应用程序中)
  3. 客户(在帐户应用程序中)发票(在计费应用程序中)
  4. 客户提供的优惠券(在结算应用中)applied/redeemed(在结算应用中)

我试过在这些应用程序的模型中使用外键,但它看起来非常粗糙和糟糕。

我不确定是否应该将所有模型放在同一位置;我想请有见识的人对我的设计进行审查,以便我可以知道更好的方法是什么。

完全没问题。为避免导入循环,您可以使用字符串定义;

模块'foo/models.py'

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

模块'bar/models.py'

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

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

相关主题: Separation of business logic and data access in django