],django,django-models,graphql"/>

首页 > 解决方案 > 无法在 django 模型中向 TimeField 添加时间 []

问题描述

我有一个像这样的django模型......

class ConversionResults(models.Model):
conversion_results_id = models.AutoField(primary_key=True)
conversion_rate_a = models.DecimalField(max_digits=4, decimal_places=2)
clicks_a = models.IntegerField()
conversion_rate_b = models.DecimalField(max_digits=4, decimal_places=2)
clicks_b = models.IntegerField()
week = models.IntegerField()
date = models.DateField()
time = models.TimeField()

objects = models.Manager()

class Meta:
    db_table = 'conversion_results'

def __int__(self):
    return self. conversion_results_id

当我尝试向模型添加数据时,如下所示

ConversionResults(
                conversion_rate_a=conversion_rate_today_a,
                conversion_rate_b=conversion_rate_today_b,
                clicks_a=ctc_today_a,
                clicks_b=ctc_today_b,
                week=week,
                date=today_date,
                time=datetime.datetime.today().time()   # the error is here
            ).save()

我的时间字段出现错误,如下所示

graphql.error.located_error.GraphQLLocatedError: [<class 'decimal.InvalidOperation'>]

我不明白这与十进制有什么关系,模型包含一个 TimeField。任何帮助将不胜感激

以下是完整的追溯

    Traceback (most recent call last):
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/promise/promise.py", line 487, in _resolve_from_executor
    executor(resolve, reject)
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/promise/promise.py", line 754, in executor
    return resolve(f(*args, **kwargs))
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
    return next(*args, **kwargs)
  File "/home/shashank/project/server/data_distribution/query.py", line 416, in resolve_daily_updates
    time=datetime.datetime.today().time()  # the error is here 
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/base.py", line 741, in save
    force_update=force_update, update_fields=update_fields)
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/base.py", line 779, in save_base
    force_update, using, update_fields,
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/base.py", line 870, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/base.py", line 908, in _do_insert
    using=using, raw=raw)
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/query.py", line 1186, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1331, in execute_sql
    for sql, params in self.as_sql():
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1275, in as_sql
    for obj in self.query.objs
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1275, in <listcomp>
    for obj in self.query.objs
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1274, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1215, in prepare_value
    value = field.get_db_prep_save(value, connection=self.connection)
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 1563, in get_db_prep_save
    return connection.ops.adapt_decimalfield_value(self.to_python(value), self.max_digits, self.decimal_places)
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/backends/base/operations.py", line 516, in adapt_decimalfield_value
    return utils.format_number(value, max_digits, decimal_places)
  File "/home/shashank/anaconda3/lib/python3.6/site-packages/django/db/backends/utils.py", line 238, in format_number
    value = value.quantize(decimal.Decimal(1).scaleb(-decimal_places), context=context)
graphql.error.located_error.GraphQLLocatedError: [<class 'decimal.InvalidOperation'>]

标签: djangodjango-modelsgraphql

解决方案


推荐阅读