2

我有3个模型

client

loan

installment- 一部分贷款

我应该这样做:

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)

并且只是: client.installment.all()

从程序员的角度来看,第一种方式接缝更干净(周围没有意大利面条,没有重复的字段),但我担心性能(您需要搜索数据库中的所有贷款,然后在此贷款中搜索分期付款)

4

2 回答 2

4

根据 Python 之禅:Flat 优于 nested。您应该将模型视为对象并应用面向对象编程的原则。

想想你拥有的实体,并应用模拟他们现实生活中的互动的关系。

“必须编写程序供人们阅读,并且只是偶然地供机器执行。”

于 2013-08-05T15:02:38.830 回答
1

如果两个模型中的客户端相同,则不应复制它。关于在 Django 文档和Django 文档中阅读select_related()的性能。only()defer()

于 2013-08-05T14:56:27.773 回答