Django 的模型

2018-08-15  本文已影响0人  vckah

本文内容来源于 Django 文档,学习所在。如若有问题,请移步官方地址

Django 中所有的模型都必须继承自 django.db.models.Model,直接继承或者间接继承都可以。
你需要确定的是父模型本身是模型还是只是一个子模型中的公共部分。
三种可能的继承方式:

from django.db import models

class CommonInfo(models.Model):
    name = models.CharField(max_length=100)
    age = models.PositiveIntegerField()

    class Meta:
        abstract = True
        ordering = ['name']

class Student(CommonInfo):
    home_group = models.CharField(max_length=5)

注意:
related_name和related_query_name参数可能会有不同的行为。

from django.db import models

class Place(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)

class Restaurant(Place):
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)

注意:
Meta 并不能直接继承,但也有一些特殊行为,如 orderingget_latest_by
尽可能的重写 class Meta

from django.db import models

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

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

    def do_something(self):
        # ...
        pass

`

上一篇 下一篇

猜你喜欢

热点阅读