Django学习路19_is_delete属性,重写类方法,显性隐性属性

Posted hany-postq473111315

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django学习路19_is_delete属性,重写类方法,显性隐性属性相关的知识,希望对你有一定的参考价值。

如果在 创建数据表时,使用了 
objects =  models.Model() 
使隐形属性变为了 显性属性 
则 必须要自己定义一个 
    继承了 models.Model 类的类,实现 管理功能

如果一个属性一直都需要使用 
比如 is_delete 属性,判断 这条数据是否删除
is_delete 为 True 也就是 1 时,则表示删除了
删除了就不应该在数据库表中再次使用了

models.py 中新添加的数据表,及其继承类

class AnimalManage(models.Manager):
    # 父类先声明,继承的是 models.Manager 类,需要重写 filter 方法
    ‘‘‘使用继承,重写原来类的方法,进行改进函数时,考虑类的继承‘‘‘
    def get_queryset(self):
        ‘‘‘使 filter 自动具有保留 is_delete 为 0 的功能,is_delete 为 1 的自动过滤掉‘‘‘
        # return super(AnimalManage,self).get_queryset()
        # 对父类的方法进行修改,将 is_delete 为 0 的留下
        return super(AnimalManage,self).get_queryset().filter(is_delete = False)

    def create(self,a_name = "Pandas"):
        # 默认创建一个熊猫
        ‘‘‘改写创建对象语句,使用子类完成操作‘‘‘
        animal = self.model()
        # 创建一个模型
        animal.a_name = a_name
        return animal


class Animal(models.Model):
    # 创建一个数据表为 Animal
    a_name = models.CharField(max_length=16)
    # 动物名字
    is_delete = models.BooleanField(default=False)
    # 设置是否删除数据,默认不删除,数据库中表示为 0

    objects = AnimalManage()
    # 设置管理者,objects 是什么名字
    # 类名.定义的名字.all()

添加到数据库表中的数据

其中 is_delete 为 1 的表示已经删除的数据

is_delete 是需要的数据

技术图片


在 urls.py 中添加参数

url(rgetanimals,views.getanimals)

在 views.py 中添加 views. 后面的函数名

def getanimals(request):
    animals = Animal.objects.all()
    # 这里使用的是子类的实例化对象 objects
    context = {
        animals:animals
    }
    ‘‘‘
    animal = Animal.objects.create(‘动物名称‘)
    使用 子类中定义的方法进行创建
    ‘‘‘

    return render(request,Animals.html,context=context)

在 templates 中创建 render 函数中的 xxx.html 文件
此处 我的是 Animals.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>动物</title>
</head>
<body>
    <h2>动物列表</h2>
    <ul>
        {% for animal in animals %}
        <li>{{ animal.a_name }}</li>
        {% endfor %}
    </ul>
</body>
</html>

技术图片

 

 技术图片

 

 


is_delete 为 1 的过滤掉了, 为 0 的保存了下来

2020-05-13

 

以上是关于Django学习路19_is_delete属性,重写类方法,显性隐性属性的主要内容,如果未能解决你的问题,请参考以下文章

Django学习路20_流程复习

Django学习路20_流程复习

Django学习路30_view中存在重复名时,取第一个满足条件的

Django学习路30_view中存在重复名时,取第一个满足条件的

Django学习路36_函数参数 反向解析 修改404 页面

Django学习路36_函数参数 反向解析 修改404 页面