【问题标题】:In Django is it okay to have models of two different apps dependent of each other?在 Django 中是否可以让两个不同应用程序的模型相互依赖?
【发布时间】:2016-01-09 14:34:25
【问题描述】:

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

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

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

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

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

我不确定是否应该将所有模型放在相同的位置;我想请有见地的人对我的设计进行审核,以便我知道有哪些更好的方法。

【问题讨论】:

    标签: django django-models django-apps


    【解决方案1】:

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

    模块'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

    【讨论】:

      猜你喜欢
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多