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

Zen of Python によると: Flat は nested よりも優れています。モデルをオブジェクトと考え、オブジェクト指向プログラミングの原則を適用する必要があります。

エンティティについて考え、実際の相互作用をシミュレートする関係を適用します。

「プログラムは、人が読めるように書かれなければならず、機械が実行するのは偶然に限られます。」

于 2013-08-05T15:02:38.830 に答える
1

クライアントが両方のモデルで同じである場合は、複製しないでください。パフォーマンスについてはselect_related()、Django ドキュメントonly()を参照してください。defer()

于 2013-08-05T14:56:27.773 に答える