我正在估算应用程序的原型。
每个评估模型将具有一个或多个零件模型。
这是我的模特的开始:
class Part(models.Model):
estimate = models.ForeignKey('Estimate', on_delete=models.CASCADE)
description = models.CharField(max_length=255)
class Estimate(models.Model):
number = models.CharField(max_length=255, primary_key=True)
customer = models.CharField(max_length=255, null=True, blank=True)
description = models.CharField(max_length=255, null=True, blank=True)
price = models.IntegerField(null=True, blank=True)
stitch = models.BooleanField(null=True, blank=True)
stitch_speed = models.IntegerField(null=True, blank=True)
stitch_rate = models.IntegerField(null=True, blank=True)
boxes = models.IntegerField(null=True, blank=True)
freight = models.IntegerField(null=True, blank=True)
overall_markup = models.IntegerField(null=True, blank=True)
date_created = models.DateField(auto_now_add=True)
def __str__(self):
return self.number
我在管理员中出现了估算模型,在StackedInline中显示了零件模型。
class PartInline(admin.StackedInline):
model = Part
extra = 1
class EstimateAdmin(admin.ModelAdmin):
model = Estimate
inlines = [PartInline]
list_display = ['number', 'description', 'customer', 'price']
理想情况下,我将进入管理员帐户,创建一个新的估算值,填写其零件,然后单击“保存”。
最终,我的评估模型将需要使用零件模型中的数据来执行计算,然后再保存到数据库中。例如,每个零件将包含其自己的价格。每个零件的价格都需要加到估算总价中。
在保存之前,我很难弄清楚如何将数据从零件模型发送到估算模型。
有什么建议吗?保存之前有没有在模型之间传递数据的标准方法?
答案 0 :(得分:0)
据我了解,您可以使用 pre_save 信号,在这里您可以将所有零件与您的Estimate
实例相关联。像这样:
from django.dispatch import receiver
from django.db.models.signals import pre_save
from somewhere import Estimate
@receiver(pre_save, sender=Estimate)
def pre_save_handler(sender, instance, **kwargs):
# instance is your Estimate object that you currently save
# you can get all part objects with:
parts = instance.part_set.all() # a QuerySet list with your parts
for part in parts:
# do something with each part
编辑:为了使用_set
函数获取所有组件,您必须反转逻辑,以便Part
实例通过覆盖{{保存在Estimate
之前1}}的{{1}}函数:
EstimateAdmin