Python 什么';在django组织关系的最好方式是什么?平坦的还是像树一样的?
我有三个模型Python 什么';在django组织关系的最好方式是什么?平坦的还是像树一样的?,python,django,django-models,database-relations,Python,Django,Django Models,Database Relations,我有三个模型 客户端 贷款 分期付款-贷款的一部分 我应该: loan-foreignKey(client) installment-foreignKey(loan) 要获得客户端分期付款,请执行以下操作: loans = client.loan.all() result = array() foreach(loans as loan): result = result + loan.installments.all() return result; loan-foreignKey(
客户端
贷款
分期付款
-贷款的一部分
我应该:
loan-foreignKey(client)
installment-foreignKey(loan)
要获得客户端分期付款,请执行以下操作:
loans = client.loan.all()
result = array()
foreach(loans as loan):
result = result + loan.installments.all()
return result;
loan-foreignKey(client)
installment-foreignKey(client)
installment-foreignKey(loan)
或者我应该这样做:
loans = client.loan.all()
result = array()
foreach(loans as loan):
result = result + loan.installments.all()
return result;
loan-foreignKey(client)
installment-foreignKey(client)
installment-foreignKey(loan)
只是:
client.installation.all()
第一种方法是从程序员的角度来看(没有垃圾邮件,没有重复的字段),但我担心性能(您需要搜索数据库中的所有贷款,然后再搜索此贷款中的分期付款)如果两种型号的客户机相同,则不应该复制它。关于Django文档中的
select_related()
、only()
和defer()
的性能阅读。根据Python的Zen:扁平比嵌套好。您应该将模型视为对象,并应用面向对象编程的原则
思考您拥有的实体,并应用关系模拟其真实生活交互
程序必须是为人们阅读而编写的,而且只是为机器执行而编写的