基于多个模型设置方法

时间:2013-08-20 15:01:31

标签: django django-models

我试图想出一种管理涉及两个单独模型的方法的方法。我目前的方法是创建一个包含每个模型的模型实例的类。这种方法有一些局限性,我想知道是否有更多的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()

这个模型并不能解决我的需求,因为抽象模型没有经理。我试图避免使这个模型成为“真正的”模型,因为它很可能变得非常大。有什么想法吗?

0 个答案:

没有答案