Django 1.10.4
我想使用自定义删除方法删除我的模型串。
list_.models.py
class MyQuerySet(models.query.QuerySet):
def delete(self):
print("deleted")
pdb.set_trace()
raise SuspiciousFileOperation
class NoDeleteManager(models.Manager):
def get_query_set(self):
return MyQuerySet(self.model, using=self._db)
class MyModel(models.Model):
objects = NoDeleteManager()
在shell中:
>>> from list_.models import MyModel
>>> m = MyModel.objects.create()
>>> m
<MyModel: MyModel object>
>>> m.id
1
>>> ml = MyModel.objects.all()
>>> ml
<QuerySet [<MyModel: MyModel object>]>
>>> ml.delete()
(1, {'list_.MyModel': 1})
>>> ml
<QuerySet []>
好吧,列表中的所有对象都删除了没有任何符号。这意味着我的自定义管理器无法以某种方式应用。
你能帮我理解我的错吗?
答案 0 :(得分:0)
class MyQuerySet(models.query.QuerySet):
def delete(self):
print("deleted")
pdb.set_trace()
raise SuspiciousFileOperation
class NoDeleteManager(models.Manager):
def get_queryset(self):
return MyQuerySet(self.model, using=self._db)
def delete(self):
return self.get_queryset().delete()
class MyModel(models.Model):
objects = NoDeleteManager()