2014-11-06 58 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