以下のコードを実行するとエラーが発生して進めません。
エラーから
if self.next_calibration_date.strftime('%Y-%m') == today.strftime('%Y-%m'):
ここでAttributeErrorが発生していますが、調べても対処法がわかりません。
この部分をターミナルで確認すると
print(type(self.next_calibration_date))
<class 'NoneType'>となっているのでこの辺りを訂正するべきかと思っています。
また、以下のstrftimeはvscode上で反応していないようです。
if self.next_calibration_date.strftime('%Y-%m')
わかる方いらっしゃいましたらご教授ください。
python
1class InsLedger(models.Model): 2 measuring_ins_group = models.IntegerField(choices=MEASURING_INS_GROUP_CHOICES,default=1) 3 measuring_tool = models.ForeignKey(Device, on_delete=models.CASCADE) 4 ins_num = models.CharField(max_length=10) 5 calibration_type = models.IntegerField(choices=CALIBRATION_CHOICES)#校正期間 6 calibration_date = models.DateField(default=now)#datetime.datetime.now()) 7 next_calibration_date = models.DateField() 8 serial_num = models.CharField(max_length=20, null=True, blank=True, default='') 9 product_num = models.ForeignKey(Product_num, on_delete=models.CASCADE)#対象品番 10 team = models.ForeignKey(TeamModel, on_delete=models.CASCADE, related_name='teams1') 11 line = models.ForeignKey(LineModel, on_delete=models.CASCADE, related_name='lines1') 12 useapp = models.ForeignKey(Useapp, on_delete=models.CASCADE)#使用用途 13 spec1 = models.ForeignKey(Spec1, on_delete=models.CASCADE)#最小目盛 14 spec2 = models.ForeignKey(Spec2, on_delete=models.CASCADE)#測定範囲 15 spec3 = models.IntegerField(choices=SPEC3_CHOICES)#表示 16 check_items = models.ForeignKey(Check_Items, on_delete=models.CASCADE)#日常点検項目 17 ins_result = models.CharField(max_length=10,)#点検結果 18 19 def save(self, *args, **kwargs): 20 auto_now = kwargs.pop('next_calibration_date_auto_now', True) 21 if auto_now: 22 if self.calibration_type == CALIBRATION_CHOICES[0][0]: 23 calibration_span = 1 24 elif self.calibration_type == CALIBRATION_CHOICES[1][0]: 25 calibration_span = 2 26 elif self.calibration_type == CALIBRATION_CHOICES[2][0]: 27 calibration_span = 5 28 elif self.calibration_type == CALIBRATION_CHOICES[3][0]: 29 calibration_span = 10 30 31 self.next_calibration_date = self.calibration_date + relativedelta(years=calibration_span) 32 33 super().save(*args, **kwargs) 34 35 36 def save(self, *args, **kwargs): 37 today = datetime.today() 38 print(type(today.strftime('%Y-%m'))) 39 print(type(self.next_calibration_date)) 40 if self.next_calibration_date.strftime('%Y-%m') == today.strftime('%Y-%m'): 41 pass_result = ('校正対象') 42 elif self.next_calibration_date.strftime('%Y-%m') > today.strftime('%Y-%m'): 43 pass_result = ('合格') 44 else: 45 pass_result = ('不合格') 46 47 self.ins_result = pass_result 48 super().save(*args, **kwargs) 49 50 51 def __str__(self): 52 return str(self.measuring_tool)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。