2016-11-03 3 views
0

Ich versuche, ein DJango-Queryset-Objekt zu serialisieren.Hinzufügen eines optionalen Nicht-Modellfelds über den Django-Core-Serializer

data = Data.objects.filter(name__icontains='John') 
data_list = serializers.serialize('json', data, fields=('name', 'title')) 
return HttpResponse(data_list, content_type="application/json") 

STDOUT von DATA_LIST

[{"pk": 4, "model": "XXX", "fields": {"name": "John ad", "title": "Mr. "}}] 

In der Ausgabeliste möchte ich auch ein Dummy-Feld mit einigen fest codierten Werte hinzuzufügen.

STDOUT von DATA_LIST

[{"pk": 4, "model": "XXX", "fields": {"name": "John ad", "title": "Mr. ", "Dummy": "Value"}}] 

Jede Hilfe, wie ich vorgehen sollte oder irgendwelche Verbindungen sollte ich würde geschätzt lesen.

Antwort

1

Eine Möglichkeit, dies zu tun, ist nur Annotation Ihrer Abfrage mit diesem Dummy-Wert. Value expression Mit

from djanog.db.models import Value 
data = Data.objects.filter(name__icontains='John').annotate(dummy=Value('Value')) 
data_list = serializers.serialize('json', data, fields=('name', 'title', 'dummmy')) 

Ein anderer Weg ist Ihr queryset in Generator wickeln:

def qs_with_dummy(queryset): 
    for obj in queryset: 
     obj.dummy = 'Value' 
     yield obj 

data = qs_with_dummy(Data.objects.filter(name__icontains='John')) 
data_list = serializers.serialize('json', data, fields=('name', 'title', 'dummy') 
+0

In annotate, wenn ich eine beliebige Zeichenfolge setzen, ich bin Attribut Lookup Fehler. – Pattu

+0

Ah. Aber ich denke nicht, dass Value in Django 1.6 verfügbar ist. – Pattu

+0

@Pattu Update lesen. Wickeln Sie Ihr Abfrage-Set in Generator und fügen Sie diesen Wert im laufenden Betrieb hinzu –

Verwandte Themen