Django 基于多模型的建立方法

Django 基于多模型的建立方法,django,django-models,Django,Django Models,我试图找出一种方法来管理涉及两个独立模型的方法。我目前的方法是创建一个类,其中包含每个模型的一个模型实例。这种方法有一些局限性,我想知道是否有一种更为道貌岸然的方法可以做到这一点。例如: from django.db import models class Element(models.Model): name = models.CharField(max_length=100) detail1 = ... detail2 = ... class Portfolio(

我试图找出一种方法来管理涉及两个独立模型的方法。我目前的方法是创建一个类,其中包含每个模型的一个模型实例。这种方法有一些局限性,我想知道是否有一种更为道貌岸然的方法可以做到这一点。例如:

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
模型。但现在,我发现我想生成组合风险分析的查询集,按元素过滤,按风险评分排序。换句话说,类似于:

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()

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

您需要继续创建模型来存储投资组合、风险和得分之间的关联。数据库的设计目的是快速访问记录——特别是基于索引值的记录——如果表包含大量记录……使用它。我可以用OrderedICT装配一个类来完成大部分我想做的事情。这似乎更像是胡言乱语。我真正想做的就是在属性上而不是在模型字段上有效地排序,并得到一个懒惰的查询集。