Django 的对象保存事件

JRM*_*JRM 1 python django model

我需要一个代表风险评估的模型

  1. 名字和其他一些东西...
  2. 指向 RiskLine 模型的字段/链接,包含 50 个行条目

我需要一个模型 RiskLine 来表示每行的 (18) 列

如何创建一个 django 模型,在创建每个 RiskAssessment 实例时在 RiskLine 模型中创建 50 行,并将它们分配给我的 RiskAssessment 模型?

它非常像一个始终有 50 行和 18 列的电子表格。

我可以在 Django 中对此进行建模吗?

Loï*_*oïc 5

当然可以。

首先创建两个模型,然后在 RiskAssessment 上应用信号save()

https://docs.djangoproject.com/en/1.9/ref/signals/#post-save

这是一个简单的例子:

from django.db.models.signals import post_save
from yourapp.models import RiskAssessment
from django.dispatch import receiver


class RiskAssessment(models.Model):
    random_property = models.CharField(length=50)

def on_risk_assessment_save(sender, instance, **kwargs):
    if kwargs['created']: # just on creation (not update)
        for i in range(50): # create all risk lines (instance is the risk assessment parent)
            rl = RiskLine()
            rl.riskAssessment = instance
            rl.property_a = 'value a'
            rl.save()

post_save.connect(on_risk_assessment_save, sender=RiskAssessment) # links RiskAssessment saving with the function just above ^


class RiskLine(models.Model):
    riskAssessment = models.ForeignKey(RiskAssessment)
    property_a = models.CharField(length=50)
Run Code Online (Sandbox Code Playgroud)