Cara Menetapkan Kunci Asing Bersarang dalam Rangka Kerja Django REST: Pendekatan Ringkas

Susan Sarandon
Lepaskan: 2024-11-25 13:17:15
asal
337 orang telah melayarinya

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

Menetapkan Kunci Asing Bersarang: Pendekatan Ringkas

Soalan

Penyesir model dalam Rangka Kerja REST Django mengendalikan hubungan kunci asing dengan membenarkan integer ID disiarkan untuk tujuan tugasan. Walau bagaimanapun, memanjangkan tingkah laku ini kepada penyeri bersiri bersarang menimbulkan cabaran, terutamanya apabila hanya menetapkan objek pangkalan data sedia ada.

Penyelesaian Bersarang Paling Mudah

Jika tiada sokongan di luar kotak, seseorang boleh override to_representation() dalam penyeri induk untuk memasukkan data anak bersarang:

class ParentSerializer(ModelSerializer):
    def to_representation(self, instance):
        response = super().to_representation(instance)
        response['child'] = ChildSerializer(instance.child).data
        return response
Salin selepas log masuk

Pendekatan ini menyediakan cara yang mudah dan penyelesaian yang berkesan untuk mencipta dan membaca contoh ibu bapa dengan anak bersarang.

Pendekatan Generik

Untuk pengendalian yang lebih umum, medan penyeri tersuai boleh digunakan:

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

    def use_pk_only_optimization(self):
        ...

    def to_representation(self, instance):
        ...
Salin selepas log masuk

Oleh mentakrifkan medan ini dalam penyeri induk dan penetapan penyeri kepada kelas penyeri anak, penetapan kunci asing boleh dicapai menggunakan satu kunci:

class ParentSerializer(ModelSerializer):
    child = RelatedFieldAlternative(queryset=Child.objects.all(), serializer=ChildSerializer)
Salin selepas log masuk

Kelebihan kaedah generik ini terletak pada kebolehgunaannya pada berbilang penyeri yang memerlukan kelakuan ini, mengurangkan keperluan untuk medan dan kaedah tersuai untuk setiap satu.

Atas ialah kandungan terperinci Cara Menetapkan Kunci Asing Bersarang dalam Rangka Kerja Django REST: Pendekatan Ringkas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan