Django的模型繼承類型有哪些

小億
93
2024-05-08 18:18:55
欄目: 編程語言

在Django中,模型繼承可以通過以下幾種方式實(shí)現(xiàn):

  1. 抽象基類繼承:定義一個(gè)抽象基類,其他模型類通過繼承該抽象基類實(shí)現(xiàn)代碼的重用。抽象基類不會(huì)在數(shù)據(jù)庫中生成對(duì)應(yīng)的表,只用于代碼結(jié)構(gòu)的組織和邏輯復(fù)用。
class BaseModel(models.Model):
    class Meta:
        abstract = True

class Book(BaseModel):
    title = models.CharField(max_length=100)
  1. 多表繼承:一個(gè)模型類繼承另一個(gè)模型類,并在數(shù)據(jù)庫中生成對(duì)應(yīng)的表結(jié)構(gòu)。子類會(huì)繼承父類的所有字段,同時(shí)可以添加自己的字段。
class Person(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()

class Employee(Person):
    position = models.CharField(max_length=100)
  1. 多級(jí)繼承:模型類之間可以形成多級(jí)繼承關(guān)系,類似于Python中的類繼承。
class Animal(models.Model):
    name = models.CharField(max_length=100)

class Mammal(Animal):
    class Meta:
        abstract = True

class Dog(Mammal):
    breed = models.CharField(max_length=100)

class Cat(Mammal):
    color = models.CharField(max_length=100)

這些是Django中常用的模型繼承類型,可以根據(jù)實(shí)際業(yè)務(wù)需求選擇合適的繼承方式。

0