【发布时间】:2014-06-26 21:47:20
【问题描述】:
我想创建一个链接,该链接可以打开模型的 django 管理员添加页面,其中一些字段已预先填写。
我检查了是否可以将参数添加到添加表单的GET字典中,如:
<a href='/admin/myapp/mymodel/add?name=John'>add new mymodel with name John</a>
(实际上我用 {% url 'admin:myapp_mymodel_add' %} 得到了 url,但这只是为了明确)。
现在这适用于数值、文本值和外键。但是 DateTime 字段呢?当我尝试传递这样一个字段时(我尝试了许多格式,例如“2014-05-09 10:10:00”),我总是收到“服务器错误”的抱怨:
'unicode' 对象没有属性'date'
在代码行中:
django/forms/widgets.py 在解压中,第 902 行
def decompress(self, value):
if value:
value = to_current_timezone(value)
return [value.date(), value.time().replace(microsecond=0)] ...
return [None, None]
变量“value”的值是我在 URL 上传递的值...
问题 1. 我认为服务器代码不应该根据用户传递的值引发异常...这不是 django 库中的错误吗?
问题 2。如何解决我的问题,即通过 GET 参数将初始日期时间传递给模型的管理“添加”页面?
【问题讨论】:
-
你试过这种格式吗:
2010-09-28+21:00:59? -
现在尝试:同样的错误...
-
好的,如果您将日期和时间拆分为 2 个单独的参数会怎样:
?date_field_name_0=2010-09-28&date_field_name_1=21:00:59,其中date_field_name是您的日期时间字段的名称? -
@alecxe 这实际上是我尝试的第一件事(查看 POST 参数)。但是后缀为 _0 和 _1 的 GET 参数被简单地忽略(没有错误,但没有初始值)。
-
你想通过GET参数设置什么日期时间字段?您能否展示包括
DatetimeField在内的模型定义?谢谢。
标签: django django-admin