Django 初始化管理中的数据库无法使用持续时间字段运行:错误 - "int"对象没有属性"total_seconds"



当我尝试在 Django 的管理中load_data数据库时,我在 diango 中的持续时间字段遇到问题。

在 models.py:

class Sport(models.Model):
name = models.CharField(max_length=32)
description = models.TextField(null = True, blank = True)
duration = models.DurationField(default=3600.0)
capacity = models.SmallIntegerField(null=True)
def __str__(self):
return self.name

管理load_data.py:

def populate():
Sport.objects.update_or_create(name="KICKBOXING", description="Dyscyplina sportowa  w której walczy się stosując zarówno bokserskie ciosy pięścią, jak i kopnięcia. Sport rozwijający w sposób holistyczny umiejętności fizyczne takie jak: siła, szybkość, wytrzymałość, gibkość, poczucie rytmu. Dodatkowo rozwijający cechy psychiczne m.in.: panowanie nad stresem, poczucie własnej wartości, czy pewność siebie."
,duration= 3000000000, capacity = 10)
Sport.objects.update_or_create(name="BODYPUMP", description="To oryginalny program ćwiczeń z wykorzystaniem sztangi, który wzmocni i ukształtuje Twoje mięśnie."
,duration= 3600000000, capacity = 15)
Sport.objects.update_or_create(name="CROSS CAGE", description="Zajęcia o bardzo wysokiej intensywności oparte na treningu funkcjonalnym. Mają na celu ukształtowanie sylwetki jak również wypracowanie szeroko pojętej sprawności fizycznej."
,duration= 3600000000, capacity = 20)
Sport.objects.update_or_create(name="BODYCOMBAT", description="To intensywny trening cardio, podczas którego uwolnisz swoje emocje! Cały program zainspirowany jest sztukami walki tj. karate, taekwondo, boks, tai chi czy muay thai."
,duration= 3600000000, capacity = 20)
Sport.objects.update_or_create(name="STRETCHING", description="Zestaw ćwiczeń rozluźniająco-rozciągających wszystkie grupy mięśniowe. Zajęcia odbywają się przy relaksującej, nastrojowej muzyce. Ćwiczenia zwiększają elastyczność mięśni i gibkość ciała. Zajęcia gwarantują relaks i odprężenie.",duration=3000000000, capacity=20)

class Command(BaseCommand):
help = 'Initialize database'
def add_arguments(self, parser):
parser.add_argument('--add-sports',
action='store_true',
dest='add-sports',
default=False,
help='Insert sport data')

def handle(self, *args, **options):
start = timezone.now()

if options['add-sports']:# or update_all:
print("Loading sports...")
populate()
end = timezone.now()
print(end - start)

在Comand之后:Python3 manage.py load_data --add-sports 我收到此错误:

文件"/home/hubert/workspace/wirtualne_srodowoska/env1/lib/python3.5/site-packages/django/db/models/fields/init.py",第 1640 行,get_db_prep_value 返回 int(round(value.total_seconds() * 1000000)) 属性错误:"int"对象没有属性"total_seconds">

谁能帮我解决这个问题? 如何修改? 当我将持续时间=3000000000更改为持续时间=3000.0时,我得到: 属性错误:"浮点"对象没有属性"total_seconds">

没有持续时间字段的所有其他模型都可以正常工作:/

DurationField 的定义: 使用时间增量对象而不是整数或浮点值

class DurationField(Field):
"""
Store timedelta objects.
Use interval on PostgreSQL, INTERVAL DAY TO SECOND on Oracle, and bigint
of microseconds on other databases.
"""
empty_strings_allowed = False
default_error_messages = {
'invalid': _("'%(value)s' value has an invalid format. It must be in "
"[DD] [HH:[MM:]]ss[.uuuuuu] format.")
}
description = _("Duration")

最新更新