0

Ich habe zwei Modelle Benutzer und Artikel. Das Modell Artikel istGet Complète Modelldetails mit Modell-ID: DANGO REST

class Item 
    owner = models.ForeignKey(User, related_name='items',null=True) 

Ein Benutzer mehr als ein Element haben. Der Benutzer-Serialisierer ist

class UserSerializer(serializers.ModelSerializer): 

class Meta: 
model = User 
    fields = ('id','username','items') 

So dass ich auf die Liste aller Elemente eines Benutzers zugreifen kann. Aber hier gibt das Feld Items nur die Item-ID zurück, ich brauche das gesamte Item-Modell, das sich auf einen Benutzer bezieht. Wie kann ich es bekommen?

Antwort

1

Für Anpassungsliste von verwandten Objekten (items) können Sie SerializerMethodField verwenden. Ich bevorzuge es, einen anderen Serialisierer für Item Objekte zu schreiben und es für das Serialisieren in dieser Methode zu verwenden.

class ItemSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Item 

class UserSerializer(serializers.ModelSerializer): 
    items = serializers.SerializerMethodField() 

    def get_items(self, obj): 
     return ItemSerializer(obj.items, many=True).data 

    class Meta: 
     model = User 
     fields = ('id','username','items')