标签:url strong mamicode 表示 type html 应该 view mod
如果在 创建数据表时,使用了 
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
Django学习路19_is_delete属性,重写类方法,显性隐性属性
标签:url strong mamicode 表示 type html 应该 view mod
原文地址:https://www.cnblogs.com/hany-postq473111315/p/12881137.html