Django属性错误';datetime.timedelta';对象没有属性';解码';
我使用的是django rest框架的一个简单通用视图,该视图在本地机器上运行良好,但在服务器上给出了一个属性错误。这就是错误:Django属性错误';datetime.timedelta';对象没有属性';解码';,django,python-3.x,django-rest-framework,Django,Python 3.x,Django Rest Framework,我使用的是django rest框架的一个简单通用视图,该视图在本地机器上运行良好,但在服务器上给出了一个属性错误。这就是错误: AttributeError at /api/getcarts/ 'datetime.timedelta' object has no attribute 'decode' 下面是课堂: class GetCarts(generics.ListAPIView): serializer_class = CartSerializer queryset
AttributeError at /api/getcarts/ 'datetime.timedelta' object has no attribute 'decode'
下面是课堂:
class GetCarts(generics.ListAPIView):
serializer_class = CartSerializer
queryset = TblCarts.objects.all()
奇怪的是,所有其他GET和POST API都工作正常。以下是TblCart:
class TblCarts(models.Model):
price = models.IntegerField()
location = models.CharField(max_length=500)
location_coordinate = models.CharField(max_length=100, default=0)
number = models.CharField(max_length=50)
promo_code = models.CharField(max_length=50, default=0)
receipt = models.CharField(max_length=100)
order_receive_date = models.DateField(auto_now_add=True)
order_receive_time = models.TimeField(auto_now_add=True)
order_dispatch_time = models.TimeField(default='00:00', max_length=100)
order_delivered_time = models.TimeField(default='00:00', max_length=100)
order_status = models.CharField(max_length=100, default=1)
class Meta:
managed = False
db_table = 'tbl_carts'
以下是序列化程序:
class CartSerializer(serializers.ModelSerializer):
class Meta:
model = TblCarts
fields = '__all__'
我想不出是什么问题。这些版本是:python 3.6.5、Django 2.1、djangorestframework 3.8.2
错误回溯:
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
126. response = self.process_exception_by_middleware(e, request)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
124. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/views/decorators/csrf.py" in wrapped_view
54. return view_func(*args, **kwargs)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/rest_framework/views.py" in dispatch
483. response = self.handle_exception(exc)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/rest_framework/views.py" in handle_exception
443. self.raise_uncaught_exception(exc)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/rest_framework/views.py" in dispatch
480. response = handler(request, *args, **kwargs)
File "/var/www/khaanpin/khanpinuser/api/views.py" in get
51. return Response({'error': 'false', 'data': CartSerializer(orders, many=True).data})
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/rest_framework/serializers.py" in data
765. ret = super(ListSerializer, self).data
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/rest_framework/serializers.py" in data
262. self._data = self.to_representation(self.instance)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/rest_framework/serializers.py" in to_representation
683. self.child.to_representation(item) for item in iterable
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/db/models/query.py" in __iter__
268. self._fetch_all()
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/db/models/query.py" in _fetch_all
1183. self._result_cache = list(self._iterable_class(self))
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/db/models/query.py" in __iter__
63. for row in compiler.results_iter(results):
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in cursor_iter
1462. for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in <lambda>
1462. for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/db/utils.py" in inner
96. return func(*args, **kwargs)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/mysql/connector/cursor_cext.py" in fetchmany
510. rows.extend(self._cnx.get_rows(size)[0])
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/mysql/connector/connection_cext.py" in get_rows
280. row[i])
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/mysql/connector/conversion.py" in to_python
205. return self._cache_field_types[vtype[1]](value, vtype)
File "/var/www/khaanpin/khanpinuser/venv3/lib/python3.6/site-packages/mysql/connector/django/base.py" in _TIME_to_python
106. return dateparse.parse_time(value.decode('utf-8'))
Exception Type: AttributeError at /api/getcarts/
Exception Value: 'datetime.timedelta' object has no attribute 'decode'
Request information:
USER: 9999999999
GET: No GET data
POST: No POST data
FILES: No FILES data
COOKIES: No cookie data
File”/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/django/core/handlers/exception.py
34响应=获取响应(请求)
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/core/handlers/base.py”中的
126response=self.process\u异常\u由\u中间件(e,请求)
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site-packages/django/core/handlers/base.py”中的
124响应=包装的回调(请求,*回调参数,**回调参数)
包装视图中的文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/django/views/decorators/csrf.py”
54返回视图函数(*args,**kwargs)
视图中的文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/django/views/generic/base.py”
68返回自调度(请求,*args,**kwargs)
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/rest\u framework/views.py”已发送
483响应=自身处理异常(exc)
句柄异常中的文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/rest\u framework/views.py”
443自举未捕获异常(exc)
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/rest\u framework/views.py”已发送
480响应=处理程序(请求、*args、**kwargs)
get中的文件“/var/www/khanpin/khanpinuser/api/views.py”
51返回响应({'error':'false','data':CartSerializer(orders,many=True).data})
数据中的文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/rest\u framework/serializers.py”
765ret=super(ListSerializer,self).data
数据中的文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/rest\u framework/serializers.py”
262self.\u data=self.to\u表示(self.instance)
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/rest\u framework/serializers.py”在to\u表示中
683iterable中项的self.child.to_表示(项)
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/django/db/models/query.py”__
268self._fetch_all()
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/django/db/models/query.py”
1183self.\u result\u cache=list(self.\u iterable\u class(self))
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/django/db/models/query.py”__
63对于编译器中的行。结果\u iter(结果):
游标编辑器中的文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/django/db/models/sql/compiler.py”
1462对于iter中的行((lambda:cursor.fetchmany(itersize)),sentinel):
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/django/db/models/sql/compiler.py”
1462对于iter中的行((lambda:cursor.fetchmany(itersize)),sentinel):
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/django/db/utils.py”,位于内部
96返回函数(*args,**kwargs)
fetchmany中的文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/mysql/connector/cursor_cext.py”
510rows.extend(self.\u cnx.get\u rows(size)[0])
get_行中的文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/mysql/connector/connection_cext.py”
280第[i]行)
文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site-packages/mysql/connector/conversion.py”到python
205返回self.\u缓存\u字段\u类型[vtype[1]](值,vtype)
python中的文件“/var/www/khanpin/khanpinuser/venv3/lib/python3.6/site packages/mysql/connector/django/base.py”
106return dateparse.parse_time(value.decode('utf-8'))
异常类型:AttributeError at/api/getcarts/
异常值:“datetime.timedelta”对象没有“decode”属性
请求信息:
用户:99999999
获取:不获取数据
POST:无POST数据
文件:没有文件和数据
COOKIES:没有cookie数据
不要使用:
order_dispatch_time = models.TimeField(default='00:00', max_length=100)
order_delivered_time = models.TimeField(default='00:00', max_length=100)
而是使用:
import datetime
<...you model ...>
order_dispatch_time = models.TimeField(default=datetime.time(00,00))
order_delivered_time = models.TimeField(default=datetime.time(00,00))
导入日期时间
订单调度时间=models.TimeField(默认值=datetime.time(00,00))
订单交付时间=models.TimeField(默认值=datetime.time(00,00))
问题似乎与您正在使用的数据库连接器有关
我解决这个问题的方法是在连接数据库时使用mysql-connector-c
而不是mysql-client
我曾经解决过我的问题,但最后还有另一个选择
步骤是:
pip安装mysql连接器python
pip安装mysqlclient
- 来自
“default”:env.db('db_default',default=f'mysql-connector://root:password@{HOST_MYSQL}:3306/YOUR_DB')
- 默认值:env.db('db_default',default=f'mysql://root:password@{HOST_MYSQL}:3306/YOUR_DB')
use\u pure
从db选项更改为true
,您可以通过向连接URL添加?use\u pure=true
查询字符串来完成此操作
最后一个可能会影响连接性能,因为它确保使用Python的纯co