[Django的] django.db.utils.IntegrityError

时间:2017-04-23 17:22:14

标签: python django django-models

我的应用名为mainsite

我在models.py

中有一个名为Weather的表类
class Weather(models.Model):
    tpr = models.CharField(max_length=5)
    wet = models.CharField(max_length=5)
    ur = models.CharField(max_length=5)
    li = models.CharField(max_length=5)
    observe_time = models.DateTimeField(default=None)

我不希望我的observe_time设置任何低价值

所以我设置为无。

我做了迁移。

当我迁移时

然后回溯发生:

  

文件“manage.py”,第22行,in       execute_from_command_line(sys.argv)

     

文件“C:\ Users \ User \ Anaconda3 \ lib \ site-packages \ django \ core \ management__init __。py”,

     

第354行,在execute_from_command_line

utility.execute()   File "C:\Users\User\Anaconda3\lib\site-packages\django\core\management\__init__.py",
     

第346行,执行

self.fetch_command(subcommand).run_from_argv(self.argv)   File "C:\Users\User\Anaconda3\lib\site-packages\django\core\management\base.py",
     

第394行,在run_from_argv

self.execute(*args, **cmd_options)   File "C:\Users\User\Anaconda3\lib\site-packages\django\core\management\base.py",
     

第445行,执行

output = self.handle(*args, **options)   File "C:\Users\User\Anaconda3\lib\site-packages\django\core\management\commands\migrate.py",
     

第222行,句柄

executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)   File
     

“C:\用户\用户\ Anaconda3 \ lib中\站点包\ django的\分贝\迁移\ executor.py”,

     

第110行,迁移

self.apply_migration(states[migration], migration, fake=fake, fake_initial=fake_initial)   File
     

“C:\用户\用户\ Anaconda3 \ lib中\站点包\ django的\分贝\迁移\ executor.py”,

     

第148行,在apply_migration

state = migration.apply(state, schema_editor)   File "C:\Users\User\Anaconda3\lib\site-packages\django\db\migrations\migration.py",
     

第115行,申请

operation.database_forwards(self.app_label, schema_editor, old_state, project_state)   File
     

“C:\用户\用户\ Anaconda3 \ lib中\站点包\ django的\分贝\迁移\操作\ fields.py”,

     

第62行,在database_forwards中

field,   File "C:\Users\User\Anaconda3\lib\site-packages\django\db\backends\sqlite3\schema.py",
     

第179行,在add_field

self._remake_table(model, create_fields=[field])   File "C:\Users\User\Anaconda3\lib\site-packages\django\db\backends\sqlite3\schema.py",
     

第147行,在_remake_table

self.quote_name(model._meta.db_table),   File "C:\Users\User\Anaconda3\lib\site-packages\django\db\backends\base\schema.py",
     

第111行,执行

cursor.execute(sql, params)   File "C:\Users\User\Anaconda3\lib\site-packages\django\db\backends\utils.py",
     

第79行,执行

return super(CursorDebugWrapper, self).execute(sql, params)   File "C:\Users\User\Anaconda3\lib\site-packages\django\db\backends\utils.py",
     

第64行,执行

return self.cursor.execute(sql, params)   File "C:\Users\User\Anaconda3\lib\site-packages\django\db\utils.py", line
     

98,在退出

six.reraise(dj_exc_type, dj_exc_value, traceback)   File "C:\Users\User\Anaconda3\lib\site-packages\django\utils\six.py", line
     

685,重新加入

raise value.with_traceback(tb)   File "C:\Users\User\Anaconda3\lib\site-packages\django\db\backends\utils.py",
     

第64行,执行

return self.cursor.execute(sql, params)   File "C:\Users\User\Anaconda3\lib\site-packages\django\db\backends\sqlite3\base.py",
     

第318行,执行

return Database.Cursor.execute(self, query, params) django.db.utils.IntegrityError: NOT NULL constraint failed:
     

mainsite_weather__new.observe_time

我不知道造成这个错误的原因。

THX。

1 个答案:

答案 0 :(得分:0)

为了实现这一点,你还应该使这个字段可以为空并且可以空白,如下所示:

observe_time = models.DateTimeField(default=None, blank=True, null=True)

或完全省略default=None,如下所示:

observe_time = models.DateTimeField(blank=True, null=True)

此外,在此之后,请勿忘记删除之前的迁移文件,然后再次运行makemigrationsmigrate