![](/img/trans.png)
[英]ValueError: invalid literal for int() with base 10: '26.02.2018'
[英]First migration to a new PostgreSQL database. ValueError: invalid literal for int() with base 10: ''
擁有成功與SQLite數據庫配合使用的models.py。 現在嘗試使用PostgreSQL。 如果查看Traceback,似乎整數字段有一個字符串默認值。 我只是看不到。 評論了大多數領域,進行了移植,仍然是同樣的問題。
追溯
Operations to perform:
Apply all migrations: admin, auth, contenttypes, players, sessions, silk, users
Running migrations:
Applying players.0007_auto_20190130_1427...Traceback (most recent call last):
File "D:\temp\YandexDisk\programming\py\nhl_web_app\manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "c:\program files\python37\lib\site-packages\django\core\management\__init__.py",
line 381, in execute_from_command_line
utility.execute()
File "c:\program files\python37\lib\site-packages\django\core\management\__init__.py",
line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "c:\program files\python37\lib\site-packages\django\core\management\base.py", lin
e 316, in run_from_argv
self.execute(*args, **cmd_options)
File "c:\program files\python37\lib\site-packages\django\core\management\base.py", lin
e 353, in execute
output = self.handle(*args, **options)
File "c:\program files\python37\lib\site-packages\django\core\management\base.py", lin
e 83, in wrapped
res = handle_func(*args, **kwargs)
File "c:\program files\python37\lib\site-packages\django\core\management\commands\migr
ate.py", line 203, in handle
fake_initial=fake_initial,
File "c:\program files\python37\lib\site-packages\django\db\migrations\executor.py", l
ine 117, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=f
ake_initial)
File "c:\program files\python37\lib\site-packages\django\db\migrations\executor.py", l
ine 147, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "c:\program files\python37\lib\site-packages\django\db\migrations\executor.py", l
ine 244, in apply_migration
state = migration.apply(state, schema_editor)
File "c:\program files\python37\lib\site-packages\django\db\migrations\migration.py",
line 124, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "c:\program files\python37\lib\site-packages\django\db\migrations\operations\fiel
ds.py", line 216, in database_forwards
schema_editor.alter_field(from_model, from_field, to_field)
File "c:\program files\python37\lib\site-packages\django\db\backends\base\schema.py",
line 523, in alter_field
old_db_params, new_db_params, strict)
File "c:\program files\python37\lib\site-packages\django\db\backends\postgresql\schema
.py", line 122, in _alter_field
new_db_params, strict,
File "c:\program files\python37\lib\site-packages\django\db\backends\base\schema.py",
line 627, in _alter_field
new_default = self.effective_default(new_field)
File "c:\program files\python37\lib\site-packages\django\db\backends\base\schema.py",
line 239, in effective_default
return field.get_db_prep_save(default, self.connection)
File "c:\program files\python37\lib\site-packages\django\db\models\fields\__init__.py"
, line 790, in get_db_prep_save
return self.get_db_prep_value(value, connection=connection, prepared=False)
File "c:\program files\python37\lib\site-packages\django\db\models\fields\__init__.py"
, line 785, in get_db_prep_value
value = self.get_prep_value(value)
File "c:\program files\python37\lib\site-packages\django\db\models\fields\__init__.py"
, line 1807, in get_prep_value
return int(value)
ValueError: invalid literal for int() with base 10: ''
model.py
from django.db import models
from django.contrib.auth.models import User
from django.utils.text import slugify
from players.storage import OverwriteStorage
class Player(models.Model):
name = models.CharField(max_length=128, default='nme')
nhl_id = models.IntegerField(unique=True, default=25)
slug = models.SlugField()
# image = models.ImageField(upload_to='players_pics', storage=OverwriteStorage(), max_length=None)
# team = models.CharField(max_length=128, default='')
# position = models.CharField(max_length=128, default='')
# height = models.CharField(max_length=128, default='')
# weight = models.IntegerField(default=25)
# birth_date = models.CharField(max_length=128, default='')
# birth_city = models.CharField(max_length=128, default='')
# birth_state = models.CharField(max_length=128, default='')
# birth_country = models.CharField(max_length=128, default='')
# nation = models.CharField(max_length=128, default='')
# draft_year = models.CharField(max_length=128, default='')
# draft_number = models.CharField(max_length=128, default='')
# games = models.IntegerField(default=25)
# pl_number = models.IntegerField(null=True, default=25)
# age = models.IntegerField(null=True, default=25)
# roster_status = models.CharField(max_length=128, default='')
# captain = models.BooleanField(default=False)
# alt_captain = models.BooleanField(default=False)
def __str__(self):
return f'{self.name}'
def save(self, *args, **kwargs):
is_new = self.pk is None
if is_new:
self.slug = slugify(self.name)
super(Player, self).save(*args, **kwargs)
class Meta:
abstract = True
class Skater(Player):
# favorite = models.ManyToManyField(User, related_name='favorite_s', blank=True)
goals = models.IntegerField(default=10)
# goals_avg = models.FloatField(default=10)
# assists = models.IntegerField()
# assists_avg = models.FloatField(default=10)
# points = models.IntegerField()
# points_avg = models.FloatField(default=10)
# plus_minus = models.IntegerField()
# plus_minus_avg = models.FloatField(default=10)
# penalty_min = models.IntegerField()
# penalty_min_avg = models.FloatField(default=10)
# shots = models.IntegerField()
# shots_avg = models.FloatField(default=10)
# hits = models.IntegerField(null=True)
# hits_avg = models.FloatField(default=10, null=True)
# blocks = models.IntegerField(null=True)
# blocks_avg = models.FloatField(default=10, null=True)
# faceoff_wins = models.IntegerField(null=True)
# faceoff_wins_avg = models.FloatField(default=10, null=True)
# pp_points = models.IntegerField()
# pp_points_avg = models.FloatField(default=10)
# sh_points = models.IntegerField()
# sh_points_avg = models.FloatField(default=10)
# time_on_ice = models.CharField(max_length=128, default='')
# time_on_ice_pp = models.CharField(max_length=128, default='')
# time_on_ice_sh = models.CharField(max_length=128, default='')
class Goalie(Player):
# favorite = models.ManyToManyField(User, related_name='favorite_g', blank=True)
wins = models.IntegerField(default=10)
# losses = models.IntegerField()
# ot_losses = models.IntegerField()
# goals_against_av = models.FloatField()
# saves_perc = models.FloatField()
# saves = models.IntegerField()
# shotouts = models.IntegerField()
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'nhl_web_app_1',
'USER': 'postgres',
'PASSWORD': '***',
'HOST': 'localhost',
'PORT': '5432',
}
}
在@awesoon的幫助下,我能夠找到錯誤。
問題出在遷移文件0007_auto_20190130_1427.py
我有一個IntegerField
的字符串默認值IntegerField
default=''
migrations.AlterField(
model_name='skater',
name='time_on_ice_pp',
field=models.IntegerField(default='', null=True),
),
需要將此默認值替換為任何整數。
migrations.AlterField(
model_name='skater',
name='time_on_ice_pp',
field=models.IntegerField(default=10, null=True),
),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.