当前位置: 代码迷 >> python >> Django模型不接受DateTimeObject(期望它)
  详细解决方案

Django模型不接受DateTimeObject(期望它)

热度:40   发布时间:2023-06-13 13:56:17.0

在我的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.5Python 2.7

时间戳似乎是一个包含一个日期时间的列表。 它应该是一个日期时间,例如timestamp[0] 它也可能是格式正确的字符串-这是您所看到的异常所来自的代码路径,但是由于传入的值是列表而不是字符串,因此它失败了。