Heim > Backend-Entwicklung > Python-Tutorial > So weisen Sie verschachtelte Fremdschlüssel im Django REST Framework zu: Ein vereinfachter Ansatz

So weisen Sie verschachtelte Fremdschlüssel im Django REST Framework zu: Ein vereinfachter Ansatz

Susan Sarandon
Freigeben: 2024-11-25 13:17:15
Original
356 Leute haben es durchsucht

How to Assign Nested Foreign Keys in Django REST Framework: A Simplified Approach

Zuweisen verschachtelter Fremdschlüssel: Ein vereinfachter Ansatz

Frage

Modellserialisierer im Django REST Framework verarbeiten Fremdschlüsselbeziehungen, indem sie die Veröffentlichung von ID-Ganzzahlen ermöglichen für Auftragszwecke. Die Ausweitung dieses Verhaltens auf verschachtelte Serialisierer stellt jedoch eine Herausforderung dar, insbesondere wenn nur vorhandene Datenbankobjekte zugewiesen werden.

Einfachste verschachtelte Lösung

In Ermangelung einer sofort einsatzbereiten Unterstützung ist dies möglich Überschreiben Sie to_representation() im übergeordneten Serialisierer, um die verschachtelten untergeordneten Daten einzuschließen:

class ParentSerializer(ModelSerializer):
    def to_representation(self, instance):
        response = super().to_representation(instance)
        response['child'] = ChildSerializer(instance.child).data
        return response
Nach dem Login kopieren

Dieser Ansatz bietet eine einfache und effektive Lösung sowohl für die Erstellung als auch Lesen übergeordneter Instanzen mit verschachtelten untergeordneten Elementen.

Generischer Ansatz

Für eine allgemeinere Handhabung kann ein benutzerdefiniertes Serialisierungsfeld verwendet werden:

class RelatedFieldAlternative(serializers.PrimaryKeyRelatedField):
    def __init__(self, **kwargs):
        ...

    def use_pk_only_optimization(self):
        ...

    def to_representation(self, instance):
        ...
Nach dem Login kopieren

Durch Definition dieses Felds im übergeordneten Element Serializer und die Einstellung des Serializers auf die untergeordnete Serializer-Klasse, die Fremdschlüsselzuweisung kann mit einem einzigen Schlüssel erreicht werden:

class ParentSerializer(ModelSerializer):
    child = RelatedFieldAlternative(queryset=Child.objects.all(), serializer=ChildSerializer)
Nach dem Login kopieren

Der Vorteil davon Die generische Methode liegt in ihrer Anwendbarkeit auf mehrere Serialisierer, die dieses Verhalten erfordern, wodurch der Bedarf an benutzerdefinierten Feldern und Methoden für jeden reduziert wird.

Das obige ist der detaillierte Inhalt vonSo weisen Sie verschachtelte Fremdschlüssel im Django REST Framework zu: Ein vereinfachter Ansatz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage