【问题标题】:How can i get values of JSONfield in my template如何在我的模板中获取 JSONfield 的值
【发布时间】:2016-07-03 10:09:36
【问题描述】:

我试图找到答案,但找不到。在我的模板中,当我迭代 JSONfield

{%  extends "electronic/electronic_base.html" %}
{% load staticfiles %}
{% block content %}
{% for item in micro_all %}
<h1>{{item.title}}</h1>
<table class="table table-condensed">
<tbody>
<tr>
{% for key in item.attributes%}
<td>{{key}}</td>
{% endfor %}
</tr>
</tbody>
</table>
{% endfor %}
{% endblock %}

我可以得到密钥,但不能得到值。尝试使用键、值和打印值,但由于某些原因,它给了我单个字母,甚至不是表格格式。如何访问模板中的值

from django.db import models
from django.contrib.postgres.fields import JSONField

class Category(models.Model):
    title = models.CharField(max_length = 200)
    def __str__(self):
        return self.title

class SubCategory(models.Model):
    title = models.CharField(max_length = 200)
    category = models.ForeignKey(Category)
    def __str__(self):
        return self.title  

class Product(models.Model):
    title = models.CharField(max_length = 200)
    category = models.ForeignKey(Category)
    subcategory = models.ForeignKey(SubCategory)
    description = models.TextField(blank = True)
    attributes = JSONField()
    date = models.DateTimeField('дата добавления')

    def __str__(self):
        return self.title

这是我的models.py

from django.shortcuts import render
from django.http import HttpResponse
from .models import Product, Category, SubCategory

def electronic_micro(request):
    micro_all =   Product.objects.filter(category__title__icontains="Микросхемы")
    return render(request,'electronic/micro_all.html', {'micro_all': micro_all})

def electronic_base(request):
    return render (request, "electronic/electronic_base.html")

这是我的看法

【问题讨论】:

  • 您能否也添加您的JSONField 的打印?
  • 这只是网站产品的简单键值特征。字符串和数字。如果我尝试在模板中打印 {{item.attributes}} 它会按预期打印所有内容。只是不能只得到我需要用我的表的其余部分填充的值

标签: python django postgresql django-jsonfield


【解决方案1】:

您应该能够将其作为普通字典进行迭代:

<table>
{% for key,value in item.attributes.items %}
    <tr>
        <td>{{key}}</td><td>{{value}}</td>
    </tr>
{% endfor %}
</table>

【讨论】:

  • 非常感谢。它有效,对不起这个新手问题。前两天无法解决。感谢您快速而清晰的回复。
  • 这在 Django3.1.2 中不起作用,对此是否有任何新的编辑答案?
猜你喜欢
  • 2019-12-25
  • 2020-02-09
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 2011-11-22
  • 2016-07-01
相关资源
最近更新 更多