Memperluaskan Model Django: Panduan Komprehensif

PHPz
Lepaskan: 2024-08-06 20:40:42
asal
526 orang telah melayarinya

Extending Django Models: A Comprehensive Guide

Django's ORM (Object-Relational Mapping) menyediakan cara yang berkuasa dan fleksibel untuk berinteraksi dengan pangkalan data anda menggunakan objek Python. Salah satu ciri yang paling berguna ialah warisan model, yang membolehkan anda memanjangkan dan menggunakan semula model dengan cara yang bersih dan cekap. Dalam catatan blog ini, kami akan meneroka cara berbeza untuk memanjangkan model Django dan memberikan contoh praktikal untuk membantu anda memahami cara memanfaatkan ciri ini dalam projek anda sendiri.

Memahami Pewarisan Model

Django menyokong beberapa jenis warisan model:

  1. Kelas Asas Abstrak
  2. Warisan Pelbagai Meja
  3. Model Proksi Setiap jenis mempunyai kes penggunaan dan kelebihan tersendiri. Mari selami setiap satu.

Kelas Asas Abstrak

Kelas asas abstrak membolehkan anda menentukan medan dan kaedah biasa yang akan dikongsi antara berbilang model. Kelas ini sendiri tidak diwakili dalam pangkalan data; sebaliknya, mereka menyediakan asas untuk model lain untuk diwarisi.

Katakan anda ingin membuat satu set model yang berkongsi maklumat hubungan biasa. Anda boleh menentukan kelas asas abstrak untuk menyimpan maklumat ini.

from django.db import models

class ContactInfo(models.Model):
    phone_number = models.CharField(max_length=15)
    email = models.EmailField()

    class Meta:
        abstract = True

class Person(ContactInfo):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)

class Company(ContactInfo):
    company_name = models.CharField(max_length=255)
    address = models.CharField(max_length=255)
Salin selepas log masuk

ContactInfo ialah kelas asas abstrak dengan medan phone_number dan e-mel. Kedua-dua Orang dan Syarikat mewarisi medan ini, bersama-sama dengan medan khusus mereka sendiri.

Warisan Berbilang Meja

Warisan berbilang jadual membolehkan anda mencipta model induk yang diwakili dalam jadual pangkalan datanya sendiri. Model anak mewarisi medan daripada model induk dan mempunyai medan tambahan mereka sendiri. Setiap model mempunyai jadual sendiri dalam pangkalan data, yang membolehkan anda membuat pertanyaan dan memanipulasi data secara bebas.

Andaikan anda mempunyai model Orang asas dan ingin menambah medan tambahan khusus untuk pekerja.

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)

class Employee(Person):
    employee_id = models.CharField(max_length=100)
    department = models.CharField(max_length=100)
Salin selepas log masuk

Dalam kes ini, Pekerja melanjutkan Orang dengan medan tambahan id_pekerja dan jabatan. Kedua-dua model mempunyai jadual pangkalan data mereka sendiri dan jadual Pekerja termasuk kunci asing kepada jadual Orang.

Model Proksi

Model proksi membolehkan anda mengubah suai gelagat model sedia ada tanpa mengubah skemanya. Anda boleh menggunakan model proksi untuk menambah kaedah tersuai atau menukar pengurus model lalai, tanpa menjejaskan jadual asas.

Andaikan anda mempunyai model Person dan ingin mencipta model proksi untuk menyediakan kefungsian tambahan, seperti kaedah tersuai.

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)

    def full_name(self):
        return f"{self.first_name} {self.last_name}"

class PersonProxy(Person):
    class Meta:
        proxy = True

    def greet(self):
        return f"Hello, my name is {self.full_name()}"
Salin selepas log masuk

PersonProxy ialah model proksi yang menambahkan kaedah sapaan pada model Person. Skema pangkalan data untuk Orang kekal tidak berubah.

Pertimbangan Praktikal

Kelas Asas Abstrak berguna apabila anda mempunyai medan dan kaedah yang anda mahu gunakan semula merentas berbilang model, tanpa membuat jadual pangkalan data yang tidak perlu.

Warisan Berbilang Jadual sangat sesuai apabila anda perlu melanjutkan kefungsian model sedia ada dan mengekalkan hubungan yang jelas antara model ibu bapa dan anak.

Model Proksi paling sesuai digunakan apabila anda ingin menambah gelagat baharu atau kaedah tersuai pada model tanpa mengubah skema pangkalan datanya.

Kesimpulan

Melanjutkan model Django ialah cara yang berkesan untuk mencipta kod yang boleh digunakan semula dan boleh diselenggara. Sama ada anda berkongsi medan biasa dengan kelas asas abstrak, menambah medan baharu dengan warisan berbilang jadual atau menyesuaikan tingkah laku dengan model proksi, Django menyediakan alatan yang anda perlukan untuk membina aplikasi yang teguh dan berskala.

Sila mencuba strategi pewarisan ini untuk melihat cara ia sesuai dengan projek anda sendiri. Memahami dan menggunakan warisan model boleh meningkatkan aliran kerja pembangunan anda dan membawa kepada kod yang lebih bersih dan teratur.

Atas ialah kandungan terperinci Memperluaskan Model Django: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!