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

在Django中,两个不同应用程序的模型可以相互依赖吗?,django,django-models,django-apps,Django,Django Models,Django Apps,我正在从头开始开发一个账单和会计应用程序,其中我创建了两个不同的应用程序: 计费:例如,该应用程序存储所有与计费相关的逻辑;订阅计划、产品、优惠券和类似的东西 账户:此应用程序保存会计数据,例如:客户账户、交易等 现在我有一个问题,我需要在以下情况下将两者联系起来: 客户订阅的计划(账单应用程序中)(账户应用程序中) 客户购买的产品(账单应用程序中)(账户应用程序中) 客户(账户内应用程序)发票(账单内应用程序) 客户申请/兑换的优惠券(计费应用程序中)(计费应用程序中) 我曾尝试在这些应用程序

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

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

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


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

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

    模块“foo/models.py”

    class Foo(models.Model):
        bar = models.ForeignKey('bar.Bar')  # no explicit import statement required
    
    class Bar(models.Model):
        foo = models.ForeignKey('foo.Foo')
    
    模块“bar/models.py”

    class Foo(models.Model):
        bar = models.ForeignKey('bar.Bar')  # no explicit import statement required
    
    class Bar(models.Model):
        foo = models.ForeignKey('foo.Foo')
    
    真正的问题是你的结构是否让事情更直观?如果您不确定为什么需要拆分依赖的代码片段,请不要这样做

    相关主题: