为什么Django不从数据库返回datetime字段?

时间:2009-07-25 03:50:28

标签: python django datetime sqlite

对于我的第一个Django应用程序,我正在尝试编写一个简单的引用集合网站(想想bash.org),功能非常简单,只是为了让我的脚湿透。我使用sqlite作为我的数据库,因为它是最容易设置的。

这是我现在唯一的模特:

class Quote(models.Model):
    text = models.TextField();
    upvotes = models.IntegerField(default=0)
    downvotes = models.IntegerField(default=0)
    active = models.BooleanField(default=False)
    date_published = models.DateTimeField(auto_now_add=True)

一个非常简单的细节模板,只是为了转储信息:

Quote: {{ quote.text }}<br>
Upvotes: {{ quote.upvotes }}<br>
Downvotes: {{ quote.downvotes }}<br>
Published: {{ qoute.date_published|date:"F j, Y, g:i a" }}

当我转到详细页面时,除日期时间(空白)外,正确输出给定对象的所有内容。但是,我检查了数据库并验证了该对象列中存储的日期时间,并显示了精细的管理区域。此外,当我从manage.py运行shell时,这是我得到的:

>>> q = Quote.objects.all()[0]
>>> q.date_published
datetime.datetime(2009, 7, 24, 23, 1, 7, 858688)

另外,我使用通用视图django.views.generic.list_detail.object_detail来处理请求,但我也尝试使用下面的视图并得到相同的结果。

def detail(Request, id):
    q = get_object_or_404(Quote, pk=id)
    return render_to_response('quotable/quote_detail.html', {'quote': q})

在尝试显示日期时,我做错了什么,或者是否有其他事情发生在这里?

感谢。

3 个答案:

答案 0 :(得分:2)

正如Adam Bernier所提到的那样,你正在拼错quote

答案 1 :(得分:0)

我不确定您使用date:过滤器做了什么 - 如果用简单的内容替换它会发生什么,例如date:"D d M Y

答案 2 :(得分:0)

我相信django.views.generic.list_detail.object_detail uses a variable named object_id, not id

    urlpatterns = patterns('',
        (r'^$', 'django.views.generic.list_detail.object_list', info_dict),
        (r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict),
        url(r'^(?P<object_id>\d+)/results/$', 'django.views.generic.list_detail.object_detail', dict(info_dict, template_name='polls/results.html'), 'poll_results'),
        (r'^(?P<poll_id>\d+)/vote/$', 'mysite.polls.views.vote'),

)

当您更改为使用详细信息模板时,您的网址格式将会出错。