modelの中に関数定義を行いましたがins_resultに空欄が入ってしまいます。
以前登録した内容には数字の1が入っています。
間違っていることはわかるのですが、何をどうすればよいかわからないので
ご教授いただきたいです。
内容はnext_calibration_dateが当月になっていれば'校正対象'、
来月以降であれば'合格'、当月より前であれば'不合格'と
ins_result = models.CharField(max_length=10,)に入力されるようにしたいです。
ご教授お願いいたします。
python
1 2_models.py 3 4 5class InsLedger(models.Model): 6 measuring_ins_group = models.IntegerField(choices=MEASURING_INS_GROUP_CHOICES,default=1) 7 measuring_tool = models.ForeignKey(Device, on_delete=models.CASCADE) 8 ins_num = models.CharField(max_length=10) 9 calibration_type = models.IntegerField(choices=CALIBRATION_CHOICES)#校正期間 10 calibration_date = models.DateField(default=now)#datetime.datetime.now()) 11 next_calibration_date = models.DateField() 12 serial_num = models.CharField(max_length=20, null=True, blank=True, default='') 13 product_num = models.ForeignKey(Product_num, on_delete=models.CASCADE)#対象品番 14 team = models.ForeignKey(TeamModel, on_delete=models.CASCADE, related_name='teams1') 15 line = models.ForeignKey(LineModel, on_delete=models.CASCADE, related_name='lines1') 16 useapp = models.ForeignKey(Useapp, on_delete=models.CASCADE)#使用用途 17 spec1 = models.ForeignKey(Spec1, on_delete=models.CASCADE)#最小目盛 18 spec2 = models.ForeignKey(Spec2, on_delete=models.CASCADE)#測定範囲 19 spec3 = models.IntegerField(choices=SPEC3_CHOICES)#表示 20 check_items = models.ForeignKey(Check_Items, on_delete=models.CASCADE)#日常点検項目 21 ins_result = models.CharField(max_length=10,)#点検結果 22 23 def save(self, *args, **kwargs): 24 auto_now = kwargs.pop('next_calibration_date_auto_now', True) 25 if auto_now: 26 if self.calibration_type == CALIBRATION_CHOICES[0][0]: 27 calibration_span = 1 28 elif self.calibration_type == CALIBRATION_CHOICES[1][0]: 29 calibration_span = 2 30 elif self.calibration_type == CALIBRATION_CHOICES[2][0]: 31 calibration_span = 5 32 elif self.calibration_type == CALIBRATION_CHOICES[3][0]: 33 calibration_span = 10 34 35 self.next_calibration_date = self.calibration_date + relativedelta(years=calibration_span) 36 37 super().save(*args, **kwargs) 38 39 40 def passorfail(self): 41 today = datetime.today() 42 if self.next_calibration_date == (today.month): 43 pass_result = ('校正対象') 44 elif self.next_calibration_date > (today.month): 45 pass_result = ('合格') 46 else: 47 pass_result = ('不合格') 48 49 self.ins_result = pass_result 50 51 def __str__(self): 52 return str(self.measuring_tool)
回答4件
あなたの回答
tips
プレビュー