2016-07-03 15 views
3

Ich versuchte, die Antwort zu finden, konnte aber nicht. In meiner Vorlage, wenn ich über JSONfieldWie bekomme ich Werte von JSONfield in meiner Vorlage

iterieren

kann ich den Schlüssel, aber nicht Wert. Versucht, Schlüssel, Wert und Druckwert zu verwenden, aber aus irgendwelchen Gründen gab es mir einzelne Buchstaben nicht einmal im Tabellenformat. Wie kann ich Wert in der Vorlage zugreifen

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 

Das ist mein 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") 

Dies ist meine Ansichten

+0

können Sie auch den Ausdruck Ihres 'JSONField' hinzufügen? – rsm

+0

ist es nur ein einfacher Schlüssel: Wert Funktionen der Produkte für die Website. Strings und Ziffern. wenn ich versuche, {{item.attributes}} in der Vorlage auszudrucken, druckt es alles, wie es soll. Ich kann nicht nur Werte bekommen, die ich brauche, um den Rest meiner Tabelle mit –

Antwort

6

sollten Sie in der Lage sein, es als ein normales Wörterbuch iterieren:

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

zu füllen. Vielen Dank. Es hat funktioniert, Entschuldigung für diese neue Frage. Konnte die letzten 2 Tage nicht lösen. Danke für schnelle und klare Antwort. –

+0

Ich bin froh, dass es dein Problem gelöst hat! (Sie sollten die Antwort als akzeptiert markieren). Das erste "Element", das Sie zugewiesen haben, ist nur eine Variable und Sie hätten einen anderen Variablennamen verwenden können. Die 'Items', die ich hinzugefügt habe, werden benötigt, um Wörterbücher zu entpacken, genau wie im Python-Code' für Schlüssel, Wert in d.items(): ' – rsm

Verwandte Themen