【发布时间】:2020-02-09 10:01:42
【问题描述】:
我对 Django 迁移功能有疑问。 我试图向我的用户模型添加新字段,它看起来像这样。
class UserProfile(models.Model):
""" Model to represent additional information about user """
user = models.OneToOneField(
User,
on_delete=models.CASCADE,
related_name='profile'
)
bio = models.TextField(
max_length=2000,
blank=True,
default=''
)
# we use URL instead of imagefield because we'll use 3rd party img hosting later on
avatar = models.URLField(default='', blank=True)
status = models.CharField(max_length=16, default='', blank=True)
name = models.CharField(max_length=32, default='')
balance = models.BigIntegerField(default='0')
def __str__(self):
return self.user.username
余额是我添加的新内容,之后我会收到类似的消息
要执行的操作:应用所有迁移:帐户、管理员、身份验证、 authtoken,内容类型,论坛,帖子,会话,线程运行 迁移:正在应用 accounts.0005_userprofile_balance...Traceback (最近一次通话最后):文件“manage.py”,第 15 行,在 execute_from_command_line(sys.argv) 文件“C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\core\management__init__.py”, 第 371 行,在 execute_from_command_line utility.execute() 文件 "C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\core\management__init__.py", 第 365 行,执行中 self.fetch_command(subcommand).run_from_argv(self.argv) 文件“C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\core\management\base.py”,行288, 在 run_from_argv self.execute(*args, **cmd_options) 文件“C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\core\management\base.py”,第 335 行,在执行 输出 = self.handle(*args, **options) 文件“C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\core\management\commands\migrate.py” , 第 200 行,在句柄中 fake_initial=fake_initial,文件“C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\migrations\executor.py”, 第 117 行,在迁移中 state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) 文件 "C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\migrations\executor.py", 第 147 行,在 _migrate_all_forwards state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) 文件 "C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\migrations\executor.py", 第 244 行,在 apply_migration 中 state = migration.apply(state, schema_editor) File "C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\migrations\migration.py", 第 122 行,申请中 operation.database_forwards(self.app_label, schema_editor, old_state, project_state) 文件 "C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\migrations\operations\fields.py", 第 84 行,在 database_forwards 中 字段,文件“C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\backends\sqlite3\schema.py”, 第 315 行,在 add_field self._remake_table(model, create_field=field) 文件 "C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\backends\sqlite3\schema.py", 第 187 行,在 _remake_table 中 self.effective_default(create_field) 文件 "C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\backends\base\schema.py", 第 240 行,在有效默认值中 默认 = field.get_db_prep_save(默认,self.connection)文件“C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\models\fields__init__.py”, 第 767 行,在 get_db_prep_save 返回 self.get_db_prep_value(value, connection=connection,prepared=False) 文件 "C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\models\fields__init__.py", 第 762 行,在 get_db_prep_value 中 value = self.get_prep_value(value) 文件 "C:\Users\Rade\Desktop\rengorum-master\backend\env\lib\site-packages\django\db\models\fields__init__.py", 第 1826 行,在 get_prep_value 中 return int(value) ValueError: int() 以 10 为底的无效文字:''
收到该消息后,我尝试将默认值设置为 0.00,但它仍然是相同的消息,我删除了余额字段并仍然收到相同的消息。 有什么想法吗?
【问题讨论】:
-
我知道 default='0' 不正确,但没有 '' 的消息仍然相同
-
您是否在未声明任何字段选项的情况下尝试过?只是简单的
balance = models.BigIntegerField()
标签: python django python-3.x django-rest-framework