django-rest-framework: Aufbau-Serialisierungsprogramm für foreign key
In meinem Modell, ich habe zwei Tabellen mit Namen: Vtable
und Vdata
. Jede virtuelle Tabelle (in Vtable
) Einträge von virtuellen Daten in Vdata
.
Ich versuche zu machen, eine Ansicht, die zeigen würde, die Liste der Vdata
entsprechenden Vtable
Mein serializer nicht funktioniert und ich denke, es ist weil ich mache es rückwärts.
Ich denke, das problem liegt in dieser Zeile:
table_id = serializers.RelatedField(many=True)
Referenz, bekomme ich diesen Fehler: 'Vtable' object is not iterable
Hier ist meine models.py:
from django.db import models
from django.contrib.auth.models import User
class Vtable(models.Model):
user = models.ForeignKey(User)
table_name = models.CharField(max_length=200)
added_date = models.DateTimeField('date added')
def __unicode__(self):
return self.table_name
class Vdata(models.Model):
table_id = models.ForeignKey(Vtable)
table_pk = models.IntegerField()
column_1 = models.CharField(max_length=200)
column_2 = models.CharField(max_length=200)
added_date = models.DateTimeField('date added')
def __unicode__(self):
return str(self.added_date)
Hier ist meine serializers.py:
from django.contrib.auth.models import User, Group
from rest_framework import serializers
from vtables.models import Vtable, Vdata
class TableSerializer(serializers.HyperlinkedModelSerializer):
user = serializers.Field(source='user.username')
class Meta:
model = Vtable
fields = ('table_name', 'added_date', 'user')
class EntrySerializer(serializers.HyperlinkedModelSerializer):
table_id = serializers.RelatedField(many=True)
class Meta:
model = Vdata
fields = ('table_id', 'table_pk', 'column_1', 'column_2', 'added_date')
Hier ist der Ansicht, dass es selbst nennt:
class EntryList(APIView):
def get(self, request, format=None):
entries = Vdata.objects.all()
serializer = EntrySerializer(entries, many=True)
return Response(serializer.data
class Meta:
model = Vdata
fields = ('table_id', 'table_pk', 'column_1', 'column_2', 'added_date')
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel, wie Sie dies tun können:
Und für die anzeigen:
Nicht vergessen:
Einstellung
related_name='entries'
im Modell foreign key-Feld-definition.'Vtable' object has no attribute 'entries'
wenn ich das tun