Rumah >pembangunan bahagian belakang >Tutorial Python >Cara Menetapkan Kunci Asing Bersarang dalam Rangka Kerja Django REST: Pendekatan Ringkas

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

Susan Sarandon
Susan Sarandonasal
2024-11-25 13:17:15357semak imbas

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

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):
        ...

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)

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!

Kenyataan:
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