0

DurationField と TimeField の両方を使用しているときに python manage.py migrate を実行すると、このエラーが発生しました。

return int(round(value.total_seconds() * 1000000))
AttributeError: 'int' object has no attribute 'total_seconds'

このサイトでこのエラーを見たことがありますが、Django 1.8 のみです。現在、Django 1.10 を使用しています。私はこれらの提案を試しました:

DurationField(default=timedelta()), 
DurationField(), 
DurationField(default=timedelta()), 
DurationField(default=int(timedelta(minutes=20).total_seconds())). 

私のモデルは現在次のようになっています。

class SomeModel(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    lunchnumber = models.IntegerField(null=True, blank=True)
    role = models.PositiveSmallIntegerField(choices=ROLE_CHOICES,null=True, blank=True)
    breaktime = models.DurationField(default=timedelta(minutes=45))

    def to_python(self, value):
        if value is None:
            return value
        if isinstance(value, datetime.timedelta):
            return value
        try:
            parsed = parse_duration(value)
        except ValueError:
            pass
        else:
            if parsed is not None:
                return parsed

Prakhar Trivedi の質問への対応: どの値がうまく機能していないのかわかりません。私は、djangoがそのデータベーステーブルに入力しようとしているデフォルト値であると想定していました。....... in get_db_prep_value return int(round(value.total_seconds() * 1000000)) AttributeError: 'int' object has no attribute 'total_seconds' のため、私はこの印象を受けています

iklinac の回答への対処:

私は行って、default=timedelta(minutes=45) を追加しました。datetime からインポートしていますが、何かが足りないと感じています。私はこれが初めてで、 to_python 関数を見たことがありません。私はまだ同じエラーが発生していますか?

4

2 に答える 2