【问题标题】:What is the use of False in delete() function in django?django的delete()函数中的False有什么用?
【发布时间】:2021-02-27 08:07:34
【问题描述】:

我正在对 django 项目进行代码重构,该项目大约有 4 年的历史,遇到了令我困惑的语法。

他们将布尔参数 False 传递给 django ORM,例如 object.delete(False)

我在 django ORM 中检查了 delete() 函数的文档。但找不到False 参数。

在 Django 模型中,delete() 方法没有方法覆盖。

这个False 参数是干什么用的?

Django version: 1.11.29

【问题讨论】:

  • 您可以更精确地了解 Django 版本,例如您也可以自己检查基本 delete() 实现

标签: django django-models django-rest-framework orm django-views


【解决方案1】:

是否有任何机会传入第二个参数?或者作为 kwargs keep_parents=False

如果有可以参考https://docs.djangoproject.com/en/3.1/ref/models/instances/#django.db.models.Model.delete

编辑:注意到您添加了非常有用的 Django 版本。 从那时起,我认为与delete 相关的任何事情都没有发生任何变化(可能除了on_delete 外键定义是必需的)

【讨论】:

    【解决方案2】:

    第一个参数正在使用,设置为False或默认为None没有区别

    来自source

    def delete(self, using=None, keep_parents=False):
        using = using or router.db_for_write(self.__class__, instance=self)
        assert self._get_pk_val() is not None, (
            "%s object can't be deleted because its %s attribute is set to None." %
            (self._meta.object_name, self._meta.pk.attname)
        )
    
        collector = Collector(using=using)
        collector.collect([self], keep_parents=keep_parents)
        return collector.delete()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      相关资源
      最近更新 更多