2016-02-01 3 views
2

мне нужна модель, которая представляет RiskAssessmentДжанго на объекте экономии события

  1. имя и некоторые другие вещи ...
  2. поле/ссылка на модель RiskLine для линии 50 записей

Мне нужна модель RiskLine, которая представляет (18) coloumns каждой строки

Как создать модель django, которая создает 50 строк в модели RiskLine при создании каждого экземпляра RiskAssessment a d присваивает их моей модели RiskAssessment?

Это очень похоже на электронную таблицу с всегда 50 линиями и 18 столбцами.

Могу ли я моделировать это в Django?

ответ

1

Конечно, вы можете.

Сначала создайте обе модели, а затем применить сигнал на 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) 
+1

ли post_save и модель, созданная принадлежат классу RiskLine? – JRM

+0

@JRM сообщение отредактировано для уточнения. И нет, они не принадлежат к RiskLine (поскольку они находятся на одном уровне отступов) –

+0

Работает хорошо. Я добавил третью таблицу для содержимого по умолчанию для строк. При создании я петлю над ним и читаю значения. – JRM

Смежные вопросы