django中實(shí)現(xiàn)邏輯刪除(轉(zhuǎn))

django中實(shí)現(xiàn)邏輯刪除,主要分三步:

1.增加字段:

is_delete = models.BooleanField(default=False, verbose_name='邏輯刪除', help_text='邏輯刪除')

2.重寫models中delete方法:

def delete(self, using=None, keep_parents=False):
        """重寫數(shù)據(jù)庫刪除方法實(shí)現(xiàn)邏輯刪除"""
        self.is_delete = True
        self.save()

3.views中過濾查詢結(jié)果集:

queryset = Role.objects.filter(is_delete=0).all()

class Role(models.Model):
    """角色表"""
    name = models.CharField(max_length=30, unique=True, verbose_name='角色名稱',
                            help_text='角色名稱')  # 媒體運(yùn)營,媒介,廣告運(yùn)營,銷售,活動(dòng)運(yùn)營,財(cái)務(wù),技術(shù),唯一,必填
    desc = models.CharField(max_length=100, null=True, blank=True, verbose_name='角色描述', help_text='角色描述')  # 非必填
    is_delete = models.BooleanField(default=False, verbose_name='邏輯刪除', help_text='邏輯刪除')
 
    class Meta:
        db_table = 'tb_role'
        verbose_name = '角色'
        verbose_name_plural = verbose_name
 
    def delete(self, using=None, keep_parents=False):
        """重寫數(shù)據(jù)庫刪除方法實(shí)現(xiàn)邏輯刪除"""
        self.is_delete = True
        self.save()
 
    def __str__(self):
        """控制對象輸出內(nèi)容"""
        return self.name

如果使用到drf,則返回查詢結(jié)果集時(shí)進(jìn)行過濾再返回,這樣被標(biāo)記為邏輯刪除記錄就不會返回:

class RoleViewSet(ModelViewSet):
    """
    list:
    查詢所有角色信息
    create:
    創(chuàng)建角色
    read:
    根據(jù)角色id,查詢角色信息
    delete:
    根據(jù)角色id,刪除角色
    update:
    根據(jù)角色id,更新角色信息
    partial_update:
    根據(jù)角色id,部分更新角色信息
    """
    queryset = Role.objects.filter(is_delete=0).all()
    serializer_class = RoleModelSerializer
 
    # 局部權(quán)限控制
    # permission_classes = [IsAuthenticated]
 
    # 精確過濾,/role_manage/roles/?name=媒體運(yùn)營,無法模糊過濾
    # filter_fields = ['name']  # INSTALLED_APPS需添加應(yīng)用:'django_filters',否則報(bào)錯(cuò)
 
    # 模糊過濾,/role_manage/roles/?name=媒體,能模糊過濾
    filterset_class = RoleFilter  # 自定義角色過濾器
 
    # 局部分頁,page_size=10:每頁獲取10條,page=1:獲取第1頁
    # /role_manage/roles/?page=1&page_size=10
    pagination_class = StandarPageNumberPagination

原文:https://blog.csdn.net/zhu6201976/article/details/83785128

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Django 1.8.2 文檔Home | Table of contents | Index | Modules...
    軒轅小愛閱讀 2,425評論 0 2
  • 模塊間聯(lián)系越多,其耦合性越強(qiáng),同時(shí)表明其獨(dú)立性越差( 降低耦合性,可以提高其獨(dú)立性)。軟件設(shè)計(jì)中通常用耦合度和內(nèi)聚...
    riverstation閱讀 2,226評論 0 8
  • 切換到創(chuàng)建項(xiàng)目的目錄 cd C:\Users\admin\Desktop\DjangoProject創(chuàng)建名為pr...
    在努力中閱讀 3,539評論 2 3
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查詢集API 參...
    陽光小鎮(zhèn)少爺閱讀 3,963評論 0 8
  • 一、Django框架前言知識: 1、C/S和B/S的區(qū)別: C/S結(jié)構(gòu)軟件:客戶端/服務(wù)端軟件,即客戶端要自己下載...
    月下獨(dú)酌123閱讀 5,148評論 0 36

友情鏈接更多精彩內(nèi)容