zoukankan      html  css  js  c++  java
  • 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(r'getanimals',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

  • 相关阅读:
    割点和割边
    差分约束
    错题本(持续更新)
    高中语文小说赏析问题
    CSPS2019游记
    【USACO09FEB】改造路Revamping Trails
    【SDOI2013】森林
    Nozaki_Chiyo的代码盒
    【HAOI2015】树上染色
    kruskal重构树
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12881137.html
Copyright © 2011-2022 走看看