我正在使用Django为我公司的设计办公室开发WebApp。 我们正在设计和制造执行器。 因此,在短时间内,“管理员”用户需要通过Django的CRUD系统输入数据。
对于大多数模型来说,这就足够了。 但是对于某些表关系,我需要设计一个具有动态内容的自定义管理表单。 请考虑以下型号:
# Functional Block
class Block(models.Model):
block_id = AutoField()
name = CharField()
# Metric System (g, kg, daN...)
class Unit(models.Model):
unit_id = AutoField()
name = CharField()
abbrebiation = CharField()
# Block Performance
class Performance(models.Model):
performance_id = AutoField()
name = CharField()
code = CharField()
type = PositiveSmallInterger()
unit = ForeignKey()
# Instance of a Block
class BlockInstance(models.Model):
instance_id = AutoField()
block = ForeignKey(to='Block)
name = CharField()
# Performance Value for a specific BlockInstance and a given Performance
class PerformanceValue(models.Model):
performance_value_id = AutoField()
block_instance = ForeignKey(to='BlockInstance')
performance = ForeignKey(to='Performance')
doc = CharField()
tolerance = FloatField()
value = FloatField()
基本上,这是最重要的(简化的)类。
诀窍是捕获BlockInstance模型。 理想的情况是:
根据所选的块,我需要动态行为:
具有TabularInline
,其中填充了固定数量的行。行数=给定相关块的Peformance
数。
对于每一行,我需要将只读字段与Performance
绑定在一起(名称,代码,类型,单位),然后与PerformanceValue
的可食用字段绑定在一起(文档,公差,值)。>
我什至不知道它是否可以用于当前的Django功能,我花了几个小时在文档中,没有找到任何现有的解决方案。
所以我打算做的是:
编写一个Javascript模块以捕获Block
下拉列表中的“更改”。
向django视图编写查询以检索Block
的“性能”
生成具有必要的“ id_xxxx”属性的html代码,以便Django框架可以正确保存PerformanceValue
的出现。
我不知道这是否是Django的方式,这是一个非常特定的用例。
任何建议,欢迎批评家。
Z。