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装配一个类来完成大部分我想做的事情。这似乎更像是胡言乱语。我真正想做的就是在属性上而不是在模型字段上有效地排序,并得到一个懒惰的查询集。