【发布时间】:2014-11-25 18:05:44
【问题描述】:
我正在为客户开发旧版 Django 1.7 系统。我之前的程序员使用过滤器查询覆盖了成员模型(基本上是用户模型)的“对象”属性,该过滤器查询删除了“is_deleted”设置为“True”的任何内容。我在下面列出了 sn-ps:
成员类sn-p:
class Member(AbstractUser):
objects = MemberManager()
all_objects = models.Manager()
MemberManager 类 sn-p:
class MemberManager(BaseUserManager):
def get_queryset(self):
return super(MemberManager, self).get_queryset().filter(is_deleted=False)
现在,当我尝试更新将 is_deleted 标志设置为“True”的用户时,它会失败。下面是一个示例代码 sn-p。请注意我如何使用“all_objects”,它是返回所有记录的默认 models.Manager()。
user = Member.all_objects.get(pk=id) # id of an is_deleted = True record
user.is_deleted = False
user.save()
这段代码导致这个 Django 查询运行,不幸的是,WHERE 子句中包含“is_deleted = 0”,这导致它找不到记录。以下是日志中显示的内容:
更新
Member[[snip...]] 在哪里(Member.is_deleted= 0 和Member.id= 6)
有什么方法可以调用不使用 MemberManager.objects get_queryset 过滤器的“save()”吗?
【问题讨论】:
标签: django django-models