单条数据逻辑删除:
我们只需要在模型类中重写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




