django中的is_delete属性

数据库删除数据时不是直接将数据删除,当一条数据对企业没用后,一般人可能会选择删除这条数据。但是删除后,万一以后又突然有用呢。所以我们这时候会选择在写orm模块的时候,加入is_delete字段

is_delete = models.BooleanField(default=False,verbose_name='是否删除')
# is_delete 为 True 也就是 1 时,则表示删除了,删除了就不应该在数据库表中再次使用了

这样以后咱如果要删除一条数据了,就设置一下

is_delete=1

就表示这条数据在逻辑上删除了,简单的说就是你再怎么搜数据库也搜不到了,如果以后还用,就再设置

is_delete=0

就可以了!

但是,自己在写项目的时候,遇到了问题
models.py

class BaseModel(models.Model):
    create_time = models.DateTimeField(auto_now_add=True,verbose_name='创建时间')
    update_date = models.DateTimeField(auto_now=True,verbose_name='更新时间')
    is_delete = models.BooleanField(default=False,verbose_name='是否删除')
    is_display = models.BooleanField(default=True,verbose_name='是否展示')
    display_order = models.IntegerField()
    class Meta:
        abstract = True

views.py

from . import models
from . import serializer
from django.conf import settings



class BannerView(GenericViewSet,ListModelMixin):
    # 无论有多少条待展示的数据,最多就展示3条
    queryset = models.Banner.objects.filter(is_delete=False,is_display=True).order_by('display_order')[:settings.BANNER_COUNTER]
    queryset1 = models.Banner.objects.filter(is_delete=True)
    serializer_class = serializer.BannerModelSerilaizer
    print(queryset)  # <QuerySet []> <QuerySet [<Banner: banner01>, <Banner: banner02>, <Banner: banner03>]>
    print(queryset1) # <QuerySet [<Banner: banner01>, <Banner: banner02>, <Banner: banner03>]>

去获取数据,得到一个空列表

如果将is_delete 改为True,就可以正常得到

class BannerView(GenericViewSet,ListModelMixin):
    # 无论有多少条待展示的数据,最多就展示3条
    queryset = models.Banner.objects.filter(is_delete=True,is_display=True).order_by('display_order')[:settings.BANNER_COUNTER]
    queryset1 = models.Banner.objects.filter(is_delete=True)
    serializer_class = serializer.BannerModelSerilaizer
    print(queryset)  # <QuerySet [<Banner: banner01>, <Banner: banner02>, <Banner: banner03>]>
    print(queryset1) # <QuerySet [<Banner: banner01>, <Banner: banner02>, <Banner: banner03>]>


排了很久的错,没想到问题是这样,虽然错排出来了,但是还是不理解,is_delete=True,不是代表数据删除了吗?为什么还能拿到数据,上课老师讲的也是is_delete = False 才能拿到数据

posted on 2022-09-11 23:55  AprilX  阅读(455)  评论(2编辑  收藏  举报