我试图想出一种管理涉及两个单独模型的方法的方法。我目前的方法是创建一个包含每个模型的模型实例的类。这种方法有一些局限性,我想知道是否有更多的dangangistic方法来做到这一点。例如:
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
模型。但现在,我发现我想生成投资组合风险分析的QuerySet,按元素过滤,按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()
这个模型并不能解决我的需求,因为抽象模型没有经理。我试图避免使这个模型成为“真正的”模型,因为它很可能变得非常大。有什么想法吗?