Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回浮点(值)值错误:无法在Django模型中将字符串转换为浮点_Python_Django_Django Models - Fatal编程技术网

Python 返回浮点(值)值错误:无法在Django模型中将字符串转换为浮点

Python 返回浮点(值)值错误:无法在Django模型中将字符串转换为浮点,python,django,django-models,Python,Django,Django Models,我尝试在此Django模型上进行迁移/迁移: from django.db import models from myapp.models import Site class GscElement(models.Model): ctr = models.FloatField('Taux de clic', default=0.0) impressions = models.IntegerField('Nombre d\'impressions', default=0)

我尝试在此Django模型上进行迁移/迁移:

from django.db import models
from myapp.models import Site

class GscElement(models.Model):
    ctr = models.FloatField('Taux de clic', default=0.0)
    impressions = models.IntegerField('Nombre d\'impressions', default=0)
    position = models.FloatField('Position moyenne', default=0.0)
    clicks = models.IntegerField('Nombre de clics', default=0)
    site = models.ForeignKey(
        Site,
        models.SET_NULL,
        blank=True,
        null=True
    )

class Page(GscElement):
    page_field = models.TextField('Url de la page', default='')
    startdate = models.DateField('Date du debut', null=True)
    enddate = models.DateField('Date de fin', null=True)

    class Meta:
        unique_together = (('startdate', 'enddate', 'page_field',))

class Query(GscElement):
    query_field = models.TextField('Requête', default='')
    startdate = models.DateField('Date du debut', null=True)
    enddate = models.DateField('Date de fin', null=True)

    class Meta:
        unique_together = (('startdate', 'enddate', 'query_field'),)
我得到了这个错误:

 Applying gsc.0004_auto_20171024_1916...Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 204, in handle
    fake_initial=fake_initial,
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/migrations/executor.py", line 115, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/migrations/executor.py", line 244, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/migrations/migration.py", line 129, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/migrations/operations/fields.py", line 87, in database_forwards
    field,
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/backends/sqlite3/schema.py", line 238, in add_field
    self._remake_table(model, create_field=field)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/backends/sqlite3/schema.py", line 113, in _remake_table
    self.effective_default(create_field)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 229, in effective_default
    default = field.get_db_prep_save(default, self.connection)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 770, in get_db_prep_save
    prepared=False)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 762, in get_db_prep_value
    value = self.get_prep_value(value)
  File "/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 1781, in get_prep_value
    return float(value)
ValueError: could not convert string to float: 
应用gsc.0004_auto_20171024_1916…回溯(最近一次呼叫最后一次):
文件“manage.py”,第22行,在
从命令行(sys.argv)执行命令
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/core/management/_init__.py”,第364行,从命令行执行
utility.execute()
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/core/management/_init__.py”,执行中第356行
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/core/management/base.py”,第283行,从_argv运行
self.execute(*args,**cmd_选项)
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/core/management/base.py”,第330行,执行
输出=self.handle(*args,**选项)
handle中的文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/core/management/commands/migrate.py”,第204行
假首字母=假首字母,
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/migrations/executor.py”,第115行,在migrate中
状态=self.\u迁移\u所有\u转发(状态,计划,完整计划,假=假,假首字母=假首字母)
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/migrations/executor.py”,第145行,全部向前迁移
state=self.apply\u迁移(state,migration,false=false,false\u initial=false\u initial)
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/migrations/executor.py”,第244行,在apply_migration中
state=migration.apply(状态,模式编辑器)
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/migrations/migration.py”,第129行,在apply中
操作。数据库转发(self.app\u标签、模式编辑器、旧状态、项目状态)
数据库中的文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/migrations/operations/fields.py”,第87行
领域
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/backends/sqlite3/schema.py”,第238行,在add_字段中
self.\u重新制作表(模型,创建字段=字段)
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/backends/sqlite3/schema.py”,表格第113行
自生效\u默认值(创建\u字段)
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/backends/base/schema.py”,第229行,默认有效
默认值=field.get\u db\u prep\u save(默认值,self.connection)
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/models/fields/_init__.py”,第770行,在get_db_prep_save中
准备就绪(错误)
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/models/fields/_init__.py”,第762行,在get_db_prep_值中
value=self.get\u prep\u值(value)
文件“/Users/Quentin/git/myapp/myapp_env/lib/python3.6/site packages/django/db/models/fields/_init__.py”,第1781行,在get_prep_值中
返回浮动(值)
ValueError:无法将字符串转换为浮点:
你知道为什么吗

仅供参考,我尝试恢复模型更改前的数据库,并尝试挤压迁移,但相同的错误总是发生

谢谢大家!


编辑:我粘贴了所有的回溯如果没有看到迁移文件,我不能确定。张贴这些将是有益的。也就是说,看起来您试图将ctr或position从字符串字段重命名为浮点字段

这可能发生在您运行makemigrations时,它询问您是否重命名了字段。如果您不关心这些字段中的数据,可以执行以下操作:

  • 删除最新的迁移
  • 再次恢复数据库
  • 再次运行python manage.py makemigrations
  • 当它问你是否重命名了一个字段时,说不
  • Django无法将字符串隐式转换为浮点,因此,如果您确实需要保留当前存储在模型中的数据,我建议您执行以下操作:

  • 创建新的浮点字段2
  • 运行管理命令从一个字段获取数据,将其转换为浮点,然后将其保存到另一个字段
  • 删除第一个(字符串)字段
  • 将第二个字段(float字段)重命名为您需要的任何名称

  • 不要切断追踪。显示整个内容。'Taux de clic'这可能会导致问题,因为它是一个字符串。如果您希望在描述中添加“description=(文本)”,感谢您的解释,我理解发生了什么: