【发布时间】:2016-03-17 02:18:18
【问题描述】:
假设以下(简化的)数据库架构:
class Site(models.Model):
...
class Business(models.Model):
site = models.ForeignKey(Site)
class Subscription(models.Model):
business = models.ForeignKey(Business)
class Invoice(models.Model):
subscription = models.ForeignKey(Subscription)
在每个与站点相关的模型中包含site = models.ForeignKey(Site) 字段是否更好(以上所有)然后即:
invoice = Invoice.objects.get(id=1)
invoice_site = invoice.site
或者像这样使用多级关系:
invoice = Invoice.objects.get(id=1)
invoice_site = invoice.subscription.business.site
我的代码的很多地方都有这种情况,并且总是想知道哪个选项更好。第一个更简洁,不破坏“DRY”规则并防止不一致,但另一个允许通过防止复杂的数据库连接来获得性能和优化改进。
当然,我假设站点在上述模型中始终是一致的,因此不可能有 Business 与站点 A 和 Invoice 与站点 B。
【问题讨论】:
标签: python django foreign-keys foreign-key-relationship