我的应用名为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。
答案 0 :(得分:0)
为了实现这一点,你还应该使这个字段可以为空并且可以空白,如下所示:
observe_time = models.DateTimeField(default=None, blank=True, null=True)
或完全省略default=None
,如下所示:
observe_time = models.DateTimeField(blank=True, null=True)
此外,在此之后,请勿忘记删除之前的迁移文件,然后再次运行makemigrations
和migrate
。