03-重写与类方法

2018-10-20  本文已影响0人  学飞的小鸡
from django.db import models

# Create your models here.


# objects管理器 (Manager对象)
# 自定义object管理器
class StudentManager(models.Manager):
    # 重写all()
    def all(self):
        # 获取所有数据 super().all()
        # 逻辑删除的数据,不显示
        return super().all().filter(isdel=False)

    # 添加对象方法 [快速创建模型对象]
    def create(self, name, score):
        # self.model() 对应的Student 对象
        stu = self.model()
        stu.s_name = name
        stu.s_score = score
        return stu

# 模型类
class Student(models.Model):
    # 系统(默认会自动创建)
    # objects = models.Manager()

    # 自定义管理器2
    # 如果有自定义,系统九不会给创建 objects
    myObjects = StudentManager()

    s_name = models.CharField(max_length=50)
    s_score = models.IntegerField()

    # 逻辑删除(默认不删除)
    isdel = models.BooleanField(default=False)


    # 添加类方法 [快速创建模型对象]
    @classmethod
    def create(cls, name, score):
        stu = cls(s_name=name, s_score=score)
        return stu
上一篇下一篇

猜你喜欢

热点阅读