【问题标题】:Django look up dictionary value in template and sort by dateDjango 在模板中查找字典值并按日期排序
【发布时间】:2023-03-11 21:05:01
【问题描述】:

我正在使用此视图将字典传递给我的模板 - views.py

def personlist(request, id):
    data = requests.get('http://127.0.0.1:8000/app_name/cities/' + id + '/persons/').json()
    context = RequestContext(request, {
    'persons': data['results'],'count': data['count'],
})
    @register.filter(name='lookup')
    def cut(value, arg):
    return value[arg]
    {{ mydict|lookup:item.name }}

    return render_to_response('template.html', context)

其中test_setresults 中的字典。我正在使用此视图以这种方式呈现模板 -

{% for person in persons %}
<a href="{% url 'person_detail' person.id %}"><p>{{person.name}}</p></a>
<p>{{person.test_set}}</p>
{% endfor %}

但这只是显示整个字典值 - [{u'test_name': u'test', u'date': u'2015-12-15T20:57:51.556145Z'}] 而我只想要日期。我尝试使用自定义模板来尝试使用person.test_set.date,但它不起作用。

此外,鉴于名称和日期,有没有办法创建查找以显示每天/每周/每月添加的名称?

【问题讨论】:

  • “不工作”是什么意思?错误?什么都没有显示?
  • @Sayse 对不起。我的意思是什么都不显示。
  • person.test_set.date 应该是您在this other question/answer 中看到的正确方法。您尝试了哪种自定义模板?你的第一个 sn-p 中的那个?
  • 是的,我的第一个 sn-p 中的那个
  • 请格式化您的代码。

标签: python django dictionary


【解决方案1】:

您似乎以错误的方式调用自定义模板。

@register.filter(name='lookup')
def cut(value, arg):
    return value.get(arg, '{} not found'.format(arg))

{{ person.test_set|lookup:'date' }}

我还修改了返回值,至少在它无法找到密钥时返回一条消息。


您的评论让我意识到 test_set 不是字典,它是字典的列表。我想你想先迭代这些然后获取日期

{% for test in test_set %}
     {{ test.date }}
     {# or {{ test|lookup:'date' }} #}
{% endfor %}

【讨论】:

  • 收到错误'list' object has no attribute 'get'
  • @SaketMishra - 啊当然,我现在已经更新了我的答案
  • 你能否给我一个提示,我应该如何处理我的问题的第二部分?
  • @SaketMishra - 我不确定它是否很模糊(也许提出一个新问题,但需要更详细地描述)。我可能会在您的数据库中创建一个模型以正确存储测试结果,然后您可以执行数据库过滤器等
猜你喜欢
  • 2011-07-19
  • 1970-01-01
  • 2017-11-07
  • 2020-06-09
  • 2011-08-12
  • 2020-05-26
  • 1970-01-01
  • 2019-08-14
  • 2018-11-15
相关资源
最近更新 更多