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

  • 相关阅读:
    A Node Influence Based Label Propagation Algorithm for Community detection in networks 文章算法实现的疑问
    Fast Newman-FN算法以及模块度定义介绍
    Label Propagation Algorithm LPA 标签传播算法解析及matlab代码实现
    设计一个smartnic
    Intel GEN11 GPU
    Intel GEN9 GPU
    Shared Virtual Memory (SVM) Functions
    connect via ssh to virtualbox guest vm without knowing ip address
    smartnic
    技术精品翻译
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12881137.html
Copyright © 2011-2022 走看看