问题描述
在我的models.py中,我有以下模型:
from django.contrib.auth.models import User
class Notification(models.Model):
recipient = models.OneToOneField(User)
timestamp = models.DateTimeField()
在views.py中 ,我尝试通过Notification.objects.create(recipient = self.request.user, timestamp=timestamp)
创建此模型的实例,其中self.request.user是User
的实例,并且timestamp等于[datetime.datetime(2015, 10, 19, 16, 3, 2, 356585, tzinfo=<UTC>)]
。
但是对于这些值,当运行objects.create
命令时,出现错误: Type error: expected string or buffer
。
行号恰好是objects.create
命令。
我怀疑我的日期时间对象配置错误。
整个跟踪如下:
Internal Server Error: /
Traceback (most recent call last):
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/views/generic/base.py", line 86, in dispatch
return handler(request, *args, **kwargs)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/views/generic/list.py", line 139, in get
context = self.get_context_data(object_list=self.object_list)
File "/home/hassan/Desktop/unconnectedredditpk/links/views.py", line 135, in get_context_data
Unseennotification.objects.create(recipient=self.request.user,timestamp=timestamp)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/manager.py", line 149, in create
return self.get_query_set().create(**kwargs)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/query.py", line 402, in create
obj.save(force_insert=True, using=self.db)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/base.py", line 546, in save
force_update=force_update, update_fields=update_fields)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/base.py", line 650, in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/manager.py", line 215, in _insert
return insert_query(self.model, objs, fields, **kwargs)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/query.py", line 1661, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 936, in execute_sql
for sql, params in self.as_sql():
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 894, in as_sql
for obj in self.query.objs
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 304, in get_db_prep_save
prepared=False)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 835, in get_db_prep_value
value = self.get_prep_value(value)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 820, in get_prep_value
value = self.to_python(value)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 788, in to_python
parsed = parse_datetime(value)
File "/home/hassan/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/utils/dateparse.py", line 67, in parse_datetime
match = datetime_re.match(value)
TypeError: expected string or buffer
烦恼在这里做什么! 我正在使用Django 1.5和Python 2.7 。
1楼
时间戳似乎是一个包含一个日期时间的列表。
它应该是一个日期时间,例如timestamp[0]
。
它也可能是格式正确的字符串-这是您所看到的异常所来自的代码路径,但是由于传入的值是列表而不是字符串,因此它失败了。