Python django模型&x27;s字段包括其他对象';属性
我正在创建一个网站来学习django框架。这是一个web开发工作室的网站,您可以自定义需要他们设计的项目 我的模型架构是: 特点:最小的积木。 Bundle:您希望包含在网站中的一组功能。 项目:功能的总体集合,可以包括(或不包括)一个捆绑包Python django模型&x27;s字段包括其他对象';属性,python,django,Python,Django,我正在创建一个网站来学习django框架。这是一个web开发工作室的网站,您可以自定义需要他们设计的项目 我的模型架构是: 特点:最小的积木。 Bundle:您希望包含在网站中的一组功能。 项目:功能的总体集合,可以包括(或不包括)一个捆绑包 from django.db import models class Feature(models.Model): name = models.CharField(max_length=100), price = models.Decim
from django.db import models
class Feature(models.Model):
name = models.CharField(max_length=100),
price = models.DecimalField(max_digits=6, decimal_places=2),
description = models.TextField(),
progress = models.IntegerField(),
duration = models.IntegerField()
def __str__(self):
return self.name
class Bundle(models.Model):
name = models.CharField(),
features = models.ManyToManyField(Feature),
def __str__(self):
return self.name
这是我到目前为止所拥有的,它还不完整,但你可以尝到我想要做什么。问题是:
我想在bundle和project中包含一个字段,用于计算它的总成本。该字段的值将是my bundle类的features属性中包含的功能的总和
我怎样才能做到这一点?我可以创建一个作为对象特征列表的字段吗
提前谢谢。如果您要查找求和字段,则可以使用
DecimalField
如下所示:
price_sum = DecimalField(max_digits=6, decimal_places=2)
使用这个ManyToMany
关系,您只需计算总和并将其保存在此字段中。字段“这是对象特征的列表”是M2M字段。我认为您不需要创建新字段,您可以根据当前架构从视图计算得到总价:
# Here you have 'list' of features in boundle
boundle_object.features.all()
# And here you have the sum of prices
from django.db.models import Sum
boundle_object.features.aggregate(summation=Sum('price'))
您可以这样修改您的
捆绑包
模型:
class Bundle(models.Model):
name = models.CharField(),
features = models.ManyToManyField(Feature)
@property
def total_feature_price(self):
sum = sum(self.features.all().values_list('price', flat=True))
return sum
def __str__(self):
return self.name
然后,如果您有一个Bundle
对象,您可以执行以下操作:
cost = bundle.total_feature_price
“我可以创建一个包含对象特征列表的字段吗”对于这一点,多个关系就足够了(或者如果不只是一个外键的话)。你可以用这个关系来计算总和。这就是为什么有很多,外国的,等等。太好了,我该怎么做?我的意思是,价格的右边是什么???