我有这种情况: 维修服务可能包括在机器中维修/安装多个备件。对于服务维修中涉及的每个备件,技术人员可以选择其状态(新的,使用过的,翻新的)。在一个名为PartCostRate的单独表中,我映射了状态的成本百分比:
models.py
class Part(models.Model):
item_code = models.CharField(max_length=255, primary_key=True)
name = models.CharField('Part Name', max_length=128)
exw_price = models.DecimalField(max_digits=12, decimal_places=6)
class PartCostRate(models.Model):
PART_STATES = (
('N', 'New'),
('U', 'Used'),
('R', 'Refurbished'),
)
state = models.CharField(max_length=1, choices=Part_STATES)
rate = models.DecimalField(max_digits=4, decimal_places=2)
class Service(models.Model):
service_code = models.CharField(max_length=10)
parts = models.ManyToManyField(Part, through='ServicePart')
class ServicePart(models.Model):
PART_STATES = (
('N', 'New'),
('U', 'Used'),
('R', 'Refurbished'),
)
service = models.ForeignKey(Service)
part = models.ForeignKey(Part)
state = models.CharField(max_length=1, choices=PART_STATE)
quantity = models.IntegerField()
cost = models.DecimalField(max_digits=12, decimal_places=6)
admin.py
class ServicePartInline(admin.TabularInline):
model = ServicePart
extra = 1
verbose_name = 'Repaired / Installed Part'
class ServiceAdmin(admin.ModelAdmin):
inlines = [ServicePartInline,]
从管理界面,我如何根据所选的状态和数量计算零件的成本(来自serviceadmin的内联)。对于Used的选择,我需要查询PartCostRate模型以检查Used的使用率,然后检查该部分的exw_price,然后进行计算而不忘记数量。
我不确定如何从管理员那样做。它是否需要javascript才能在其字段中显示计算的成本。因为有时他们可能会手动更改它。
提前致谢
答案 0 :(得分:1)
有两种方法可以做到这一点
1)像你说的Javascript。看看这个link。您将看到如何将自己的脚本文件挂钩到django admin
2)创建您自己的模型,扩展您的ServiceAdmin设置表单值(check this out)表单,并在表单保存时更新表单中的值。