2 つの別々のモデルを含むメソッドを管理する方法を見つけようとしています。私の現在のアプローチは、各モデルのモデル インスタンスを保持するクラスを作成することです。このアプローチにはいくつかの制限があり、これを行うためのよりジャンゴ的な方法があるかどうか疑問に思います。例えば:
from django.db import models
class Element(models.Model):
name = models.CharField(max_length=100)
detail1 = ...
detail2 = ...
class Portfolio(models.Model):
name = models.CharField(max_length=100)
detail1 = ...
elements = models.ManyToManyField(Element)
class Risk(models.Model):
name = models.CharField(max_length=100)
detail1 = ...
class PortfolioRiskAnalysis():
def __init__(self, portfolio, risk):
self.portfolio = portfolio
self.risk = risk
@property
def risk_score(self):
return calculate_risk_score(self.portfolio, self.risk)
ポートフォリオやリスクが多いため、PortfolioRiskAnalysis
モデルの作成は避けてきました。しかし今、ポートフォリオ リスク分析のクエリセットを生成し、要素でフィルター処理し、risk_score で並べ替えたいと考えています。つまり、次のようなものです。
class PortfolioRiskEvaluation(models.Model):
portfolio = models.ForeignKey(Portfolio)
risk = models.ForeignKey(Risk)
score = models.FloatField()
class Meta:
abstract = True
order_by = ['score']
def save(self):
risk_analysis = RiskAnalysis(self.portfolio, self.risk)
self.score = risk_analysis.risk_score
super(PortfolioRiskEvaluation, self).save()
抽象モデルにはマネージャーがないため、このモデルは私のニーズを解決しません。非常に大きくなる可能性が高いため、このモデルを「実際の」モデルにすることは避けようとしています。何かご意見は?