暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

20200214-20Django单条数据删除及批量删除

智趣智学 2020-02-28
604

单条数据逻辑删除:

我们只需要在模型类中重写delete方法即可:

代码如下

class Student(models.Model):

    sname = models.CharField(max_length=30)

    isdelete = models.BooleanField(default=False)

    def delete(self, using=None ,keep_parents=False):

        self.isdelete = True

        self.save() 

这里的self指的就是模型类Student里的当前对象,例如

Student.objects.first().delete() 这个单条删除语句中,

self=Student.objects.first()

批量逻辑删除:

我们通常批量删除语句是Student.objects.filter().delete()

思路:

首先定义一个批量删除类,在这个类里重写filter方法,并对该方法内的delete进行重新赋值

最后不要忘记在模型类中给objects赋值(objects=批量删除类)

class delpiliang(Manager):

    def get_queryset(self):

        return Manager.get_queryset().filter(isdelete=False)

    def filter(self,*args,**kwargs):

        delList = Manager.get_queryset(self)

        def delete1(delqueryset):

            for dq in defqueryset:

                dq.isdelete=True

                dq.save()

        import types

        deList.delete = types(delete1,deList)

        return delList


文章转载自智趣智学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论