2014-11-06 27 views
1

我在这里有一个大问题,我只是不能迁移我的数据库,因为我想。我测试了很多东西(甚至直接在数据库中写入...)。它使用Django 1.7.1运行,我的数据库使用Sqlite3存储。因此,这里是我的问题:Django 1.7 migrations - datetime typeerror

我有这样一个模式:(。我想要做的事情是存储计时器也许就像任何时候都可以在例如种族)

from django.db import models 
import datetime 

class UserUsingTime(models.Model): 
    userid = models.CharField(max_length = 30) 
    using_time = models.DateTimeField(default = datetime.time()) 

而且我在模型的末尾添加一行:

​​

然后我跑python manage makemigrations my_app_name和它的结果:

Migrations for 'my_app_name': 
    0003_userusingtime_app_name.py: 
    - Add field app_name to userusingtime 

所以现在一切都很好:)但是当我尝试运行python manage migrate然后我有一大堆的错误线的东西:


    Operations to perform: 
     Apply all migrations: admin, contenttypes, my_app_name, auth, sessions 
    Running migrations: 
     Applying my_app_name.0003_userusingtime_app_name...Traceback (most recent call last): 
     File "./manage.py", line 8, in 
     execute_from_command_line(sys.argv) 
     File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 385, in execute_from_command_line 
     utility.execute() 
     File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 377, in execute 
     self.fetch_command(subcommand).run_from_argv(self.argv) 
     File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 288, in run_from_argv 
     self.execute(*args, **options.__dict__) 
     File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 338, in execute 
     output = self.handle(*args, **options) 
     File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 160, in handle 
     executor.migrate(targets, plan, fake=options.get("fake", False)) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 63, in migrate 
     self.apply_migration(migration, fake=fake) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 97, in apply_migration 
     migration.apply(project_state, schema_editor) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/migration.py", line 107, in apply 
     operation.database_forwards(self.app_label, schema_editor, project_state, new_state) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/operations/fields.py", line 37, in database_forwards 
     field, 
     File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/schema.py", line 167, in add_field 
     self._remake_table(model, create_fields=[field]) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/schema.py", line 128, in _remake_table 
     self.create_model(temp_model) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/backends/schema.py", line 209, in create_model 
     definition, extra_params = self.column_sql(model, field) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/backends/schema.py", line 121, in column_sql 
     default_value = self.effective_default(field) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/backends/schema.py", line 184, in effective_default 
     default = field.get_db_prep_save(default, self.connection) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 627, in get_db_prep_save 
     prepared=False) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1286, in get_db_prep_value 
     value = self.get_prep_value(value) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1269, in get_prep_value 
     value = super(DateTimeField, self).get_prep_value(value) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1171, in get_prep_value 
     return self.to_python(value) 
     File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1228, in to_python 
     parsed = parse_datetime(value) 
     File "/usr/local/lib/python2.7/dist-packages/django/utils/dateparse.py", line 70, in parse_datetime 
     match = datetime_re.match(value) 
    TypeError: expected string or buffer 

所以,我真的不知道接下来做什么?另外,它似乎有一个datetime错误,我不能解释,因为我没有碰我的模型中的任何datetime对象......太奇怪了!

请帮我解决这个问题:) 我事先感谢你们(Y)!

回答

1

您的using_time字段定义有误。 Django抱怨,因为你试图在datetime容器中存储一个time对象。

DateTimeField只是你试图表示的一段错误字段(一段时间)。您可以将其切换到TimeField,或者只需使用FloatFieldIntegerField来存储秒或毫秒。 (为什么现在只抛出一个迁移错误?我认为这是因为这个错误在Django的早期版本中没有被捕获,并且这是第一次真正的迁移(即不是初始的,假的迁移)已经在1.7中试过了。)

+0

不,我想要做的是存储一个计时器。例如,可能是比赛中的所有时间。我想存储那种数据。所以我使用DateTimeField。并且将datetime.time()设置为默认值,表示默认情况下它将被设置为零。但无论如何感谢:) – 2014-11-06 15:21:29

+0

好吧,非常感谢你!我将以毫秒为单位存储数据,然后:D 对不起,我不能投票...(声誉太低):( – 2014-11-06 15:49:30