6

答えを見つけようとしましたが、できませんでした。テンプレートで反復するとき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")

これは私の見解です

4

1 に答える 1

11

通常の辞書として反復できるはずです。

<table>
{% for key,value in item.attributes.items %}
    <tr>
        <td>{{key}}</td><td>{{value}}</td>
    </tr>
{% endfor %}
</table>
于 2016-07-03T10:25:15.543 に答える