Ich verwende das django rest framework, um eine API zu erstellen. Ich habe folgende Modelle:Abrufen eines Fremdschlüsselwertes mit django-rest-framework-Serialisern
class Category(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
class Item(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, related_name='items')
def __unicode__(self):
return self.name
Um einen Serializer für die Kategorien zu erstellen ich tun würde:
class CategorySerializer(serializers.ModelSerializer):
items = serializers.RelatedField(many=True)
class Meta:
model = Category
... und das würde mir mit:
[{'items': [u'Item 1', u'Item 2', u'Item 3'], u'id': 1, 'name': u'Cat 1'},
{'items': [u'Item 4', u'Item 5', u'Item 6'], u'id': 2, 'name': u'Cat 2'},
{'items': [u'Item 7', u'Item 8', u'Item 9'], u'id': 3, 'name': u'Cat 3'}]
Wie würde ich mich über das Gegenteil von einem Punkt Serializer bekommen, das heißt:
[{u'id': 1, 'name': 'Item 1', 'category_name': u'Cat 1'},
{u'id': 2, 'name': 'Item 2', 'category_name': u'Cat 1'},
{u'id': 3, 'name': 'Item 3', 'category_name': u'Cat 1'},
{u'id': 4, 'name': 'Item 4', 'category_name': u'Cat 2'},
{u'id': 5, 'name': 'Item 5', 'category_name': u'Cat 2'},
{u'id': 6, 'name': 'Item 6', 'category_name': u'Cat 2'},
{u'id': 7, 'name': 'Item 7', 'category_name': u'Cat 3'},
{u'id': 8, 'name': 'Item 8', 'category_name': u'Cat 3'},
{u'id': 9, 'name': 'Item 9', 'category_name': u'Cat 3'}]
Ich habe die Dokumente auf reverse relationships für den Rest-Framework gelesen, aber das scheint das gleiche Ergebnis wie die nicht umgekehrten Felder zu sein. Fehle ich etwas Offensichtliches?
Vielen Dank Tom – hellsgate
was über alle Felder des catagory Modell retriving ?? – Clayton
, wenn Sie alle Felder der Kategorie Modell abrufen möchten die Kategorie Serializer machen und haben es in Code wie category_name = CategorySerliazer() –