Django get_object_or_404() 与 DateTimeField

2023-11-29

我现在正在读《Django by Example》一书。

我在使用参数查找记录时遇到问题。

我的代码如下所示:

设置.py

TIME_ZONE = 'Asia/Seoul'

模型.py

    ...
    published = models.DateTimeField(default=timezone.now)
    ...

views.py

def post_show(request, year, month, day, slug):
    post = get_object_or_404(Post,
                         slug=slug,
                         status='published',
                         published__year=year,
                         published__month=month,
                         published__day=day)

return render(request, 'blog/default/post/show.html', {'post': post})

urls.py

url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$',
    views.post_show, name='post_show'),

MVT 工作正常,但我认为 DateTimeField、TimeZone 或 SQLite3 有问题。

在 SQLite3 中,“published”DateTimeField 的值为:“2016-05-17 19:57:03”,这是 UTC 时间。我提前 9 小时到达亚洲/首尔。所以我实际上是在 5 月 18 日凌晨 4:57 发布的。

>>> p = get_object_or_404(Post,slug='test', published__year=2016, published__month=5, published__day=18)
>>> p.title
'test'
>>> p.published
datetime.datetime(2016, 5, 17, 19, 57, 3, tzinfo=<UTC>)

DB说17号发布,但我必须传递参数“18”。如果我通过了 17,它就会抛出 404。

如何强制过滤条件使用 UTC 时区?


我自己回复我的帖子。我读了手册上说的。

当 USE_TZ 为 True 时,日期时间字段在过滤之前将转换为当前时区。

我更改了 get_absolute_url() 方法以将 UTC 转换为亚洲/首尔时区:

def get_absolute_url(self):

    # this line was added.
    published_localtime = timezone.localtime(self.published)

    return reverse('blog:post_show',
                   args=[
                       published_localtime.year,
                       published_localtime.strftime('%m'),
                       published_localtime.strftime('%d'),
                       self.slug

我是这样修复的,但我想知道更好的方法(如果有的话)。谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django get_object_or_404() 与 DateTimeField 的相关文章

随机推荐

  • 如何从 Sherlock 操作栏菜单项中删除蓝色发光?

    有谁知道如何消除按下的操作栏菜单项周围令人讨厌的蓝色发光 谢谢 姆拉乔 是的 您可以覆盖 android actionBarItemBackground 为每个操作项的背景定义可绘制资源 例如 检查文档here 注意 如果您想支持 API
  • 通过 WIX 添加 MimeMap 失败

    我遇到了一个错误来修复安装程序问题 不幸的是 我对 WIX 一无所知 所以我不知道从哪里开始 WXS 文件正在添加必要的 MimeMap 但是当 QA 在带有 IIS6 的 Windows 2003 上安装我们的应用程序时 未设置 MIME
  • 像 WPF 中的 Visual Studio 一样的多个键绑定

    我尝试阅读 StackOverflow 上的许多关于如何像 Visual Studio 一样实现 KeyBinding 的帖子Ctrl Shift A or Ctrl K Ctrl C但没有运气 我已经发现thisblogspot 上关于多
  • 初始化中的双“=”

    我在做一些实验时遇到了这一行 int home address current pos hash key size 我想知道它到底有什么作用 不是哈希函数或任何东西 只是 int变量 变量 值 的东西 该表达式读作 int home add
  • 在引号内使用引号

    当我想做一个printPython 中的命令 我需要使用引号 我不知道如何在不关闭字符串的情况下做到这一点 例如 print a word that needs quotation marks 但是 当我尝试执行上面所做的操作时 我最终关闭
  • App Store 中我的应用程序的可追踪链接

    我有一个 iPhone 应用程序 我想在几个网站上推广它 当然我想跟踪来自这些网站的潜在客户的安装数量 我想知道是否可能 拥有不同的 iTunes 链接 我将与不同的网站共享这些链接 然后以某种方式跟踪这些统计数据 或者能够通过 HTTP
  • 无法启动 Git 进程

    我尝试使用 PhpStorm 推送到 Bitbucket 但向我发送了一条错误消息 如下所示 Failed to start Git process 昨天它有效 但现在出了问题 我可以做什么来修复这个错误 这听起来像是您的系统 或您 更新了
  • 子项目中未解决的包依赖性

    在我的 Kotlin Spring Boot 项目中 我使用 Kotlin DSL Gradle 包含三个子项目 其中两个是security这取决于database 在 IntelliJ 中 应用程序成功运行并按预期执行 当作为 Sprin
  • 在子目录中设置 CakePHP; WordPress 安装在根目录下

    我已经寻找解决方案两个小时了 但似乎没有任何效果 这是我的问题 我已将 WordPress 安装在根目录 var www 中 所以通过去http www geekderek com 我看到我的 WordPress 网站 我将 CakePHP
  • 如何从代码中执行onTouch事件?

    Using myObject performClick 我可以从代码中模拟点击事件 像这样的东西存在吗onTouch事件 我可以通过 Java 代码模仿触摸操作吗 EDIT 这是我的onTouch听众 myObject setOnTouch
  • gcc 相当于#pragma comment

    我正在尝试编写一个宏 使用 gcc 编译器向可执行文件添加注释 这不是为了链接目的 我只是想添加文字评论 gcc 中是否有用于此目的的 pragma comment 等效项 我不确定 向可执行文件添加注释 是什么意思 谁或什么会消费 展示甚
  • SIMD 的优先选择是始终摆脱分支吗?

    如果您正在编写一些将由另一个程序运行的 SIMD 代码 那么摆脱分支以提高性能是否总是有利的 我听说甚至做额外的操作只是为了避免if else语句等仍然快得多 我问这个是因为我做了一些分支 基本上是这样的 axis x 0 y 1 z 2
  • 从列表框用户表单中删除一行

    我有一个列表框 显示 Excel 工作表的行 我需要添加一个删除按钮来删除所选行 我试过这个 Private Sub CommandButton3 Click Dim i As Integer For i 0 To Range A65356
  • 如何从 PHP 中 var_dump 的输出创建数组?

    我怎样才能解析输出var dump在 PHP 中创建数组 Use 变量导出如果你想要一个也是有效 PHP 代码的表示 a array 1 2 array a b c dump var export a true echo dump 将显示
  • AVAudioPlayer 的 NSOSStatusErrorDomain 代码=-54

    AVAudioPlayer 在某些本地 MP3 文件上出现以下错误 Error Domain NSOSStatusErrorDomain Code 54 null 我正在将 zip 文件下载到 Documents 目录 然后使用名为的库解压
  • 从 NSMutableArray 中删除 for 循环中的对象

    我正在与一个UITableView对于作为数据源的数组中的每个对象UITableView 如果它们符合某个条件我就会删除它们if陈述 我的问题是它只删除数组中的所有其他对象 Code UIImage isCkDone UIImage ima
  • 为什么 C++ 中存在从指针到 bool 的隐式类型转换?

    考虑班级foo有两个这样定义的构造函数 class foo public foo const std string filename std cout lt lt ctor 1 lt lt std endl foo const bool s
  • 如何在 Android 上将 TTS 输出保存为音频文件?

    这是我在此的头一篇博文 我是 Android 编程新手 我想创建一个应用程序 可以将文本到语音的输出保存到音频文件中到我的数据库中 我听说过合成到文件 但事实并非如此 SynthesizeToFile 应该创建一个 wav 您可以解码并发送
  • 下拉菜单 - 使

    我有点疯狂地试图实现我的客户想要的东西 我可以告诉他们这是不可能的 但我喜欢挑战 基本上 我正在尝试做一个下拉菜单 其中下拉菜单 ul or ul menu li ul 被 div 包围 有点儿 ul class menu li a hre
  • Django get_object_or_404() 与 DateTimeField

    我现在正在读 Django by Example 一书 我在使用参数查找记录时遇到问题 我的代码如下所示 设置 py TIME ZONE Asia Seoul 模型 py published models DateTimeField def