Python django模型&x27;s字段包括其他对象';属性

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

我正在创建一个网站来学习django框架。这是一个web开发工作室的网站,您可以自定义需要他们设计的项目

我的模型架构是:

特点:最小的积木。 Bundle:您希望包含在网站中的一组功能。 项目:功能的总体集合,可以包括(或不包括)一个捆绑包

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

“我可以创建一个包含对象特征列表的字段吗”对于这一点,多个关系就足够了(或者如果不只是一个外键的话)。你可以用这个关系来计算总和。这就是为什么有很多,外国的,等等。太好了,我该怎么做?我的意思是,价格的右边是什么???