当我尝试在 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)
在命令之后: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 return int(round(value.total_seconds( ) * 1000000)) AttributeError: 'int' 对象没有属性 'total_seconds'
谁能帮我这个?如何修改它?当我将 duration=3000000000 更改为 duration=3000.0 时,我得到: AttributeError: 'float' object has no attribute 'total_seconds'
没有持续时间字段的所有其他模型都可以正常工作:/