问题标签 [django-custom-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
15964 浏览

django - Django 自定义管理器 - 如何仅返回登录用户创建的对象?

我想覆盖自定义对象模型管理器以仅返回特定用户创建的对象。管理员用户仍应使用对象模型管理器返回所有对象。

现在我找到了一种可行的方法。他们建议创建您自己的中间件,如下所示:

在自定义管理器中,您可以调用该get_current_user()方法以仅返回特定用户创建的对象。

这是解决这个用例的好方法吗?这行得通吗?或者这就像“用大锤敲碎坚果”?;-)

只需使用:

在每个视图中对我来说都不是很整洁。

编辑不要使用这种中间件方法!!!

使用下面 Jack M. 所述的方法

经过一段时间的测试后,这种方法的表现非常奇怪,并且通过这种方法,您将全局状态与当前请求混合在一起。

使用下面介绍的方法。这真的很容易,无需使用中间件。

在您的模型中创建一个自定义管理器,其函数期望当前用户或任何其他用户作为输入。

另请参阅有关 middelware 方法的讨论。

0 投票
2 回答
1100 浏览

python - Django 自定义管理器

我正在查看一些代码,我很好奇这是否是一种好习惯。

我总是看到自定义管理器覆盖 get_query_set(释义)方法。这是处理事情的好方法吗?

0 投票
2 回答
373 浏览

django - Django:两步相关管理器

我有三个由外键链接的模型:

我可以这样做:

从“一个”实例访问所有相关的“两个”实例。

如何构建自定义管理器以从“一个”实例访问所有“三个”实例?

我需要这个,因为我有一个框架,它在给定一个实例及其管理器之一的情况下构建一个 HTML 表:

因此,如果我可以在实例上使用“three_set”管理器,那就太好了。

解决方案 我最终添加了一个从三到一的外键。感谢您的回答让我想起了 KISS 哲学。

0 投票
3 回答
79529 浏览

python - Django 动态模型字段

我正在开发一个多租户应用程序,其中一些用户可以定义自己的数据字段(通过管理员)以收集表单中的其他数据并报告数据。后一点使 JSONField 不是一个很好的选择,所以我有以下解决方案:

请注意 CustomDataField 如何具有指向站点的 ForeignKey - 每个站点将具有一组不同的自定义数据字段,但使用相同的数据库。那么各种具体的数据字段可以定义为:

这导致以下用途:

但这感觉非常笨拙,尤其是需要手动创建相关数据并将其与具体模型相关联。有更好的方法吗?

已被抢先丢弃的选项:

  • 自定义 SQL 以即时修改表。部分是因为这不会扩展,部分是因为它太过分了。
  • NoSQL 等无模式解决方案。我没有反对他们,但他们仍然不合适。最终这些数据输入,并且存在使用第三方报告应用程序的可能性。
  • JSONField,如上所述,因为它不适用于查询。
0 投票
1 回答
467 浏览

django - Django 文件的 Cron 作业

我想设置一个 Cron 作业来运行一个 django 文件。

我想知道 django-cron 是一个不错的选择吗?ie 还是有其他可以使用的应用程序?如果没有,如何通过命令行运行 django 文件?

我设置了以下变量

我不断收到这些错误,因为被引用的文件具有直接导入

任何帮助将不胜感激。

自定义命令

我在尝试运行命令时遇到的错误如下:-

imit_choices_to), AttributeError: 'str' 对象没有属性 '_default_manager'

0 投票
0 回答
45 浏览

django - django 自定义管理器结果重新排列

我有所有国家的名单。当我需要获取英语国家的列表时,我会这样做:

效果很好。但是,我想说美国和加拿大始终出现在列表的开头,因为我的主要关注点是北美。

现在,我应该在自定义管理器中进行查询并从列表中删除这两个国家并在开头插入它们,还是应该有一个模板标签,它接受一个列表并返回一个重新排列的列表。

使用 sort_by 来做这件事会很好,而且我不介意重写一些函数来完成工作。

示例代码表示赞赏。

0 投票
1 回答
2164 浏览

django - 检查 django 中的空查询集

我的模型设备有一个自定义管理器。如果返回的查询集为空,我想返回一个不同的对象。问题是空查询集不会被评估为空。

我查看了这些线程以了解如何检查查询集是否为空。 在 Django 中,检查空查询集的最有效方法是什么? 在 Django 中检查空查询集

这是我的模型:

这是我的经理。看看我如何使用所有这些 if 语句来检查它是否为空。

这是来自外壳。对于“mobile”(存在)和“cow”(不存在)设备,Manager 显示相同的行为。当我尝试打印查询集的第一个值时,我得到了“cow”的预期 IndexError。

我在这里做错了什么?如果查询集为空,我如何检查管理器?

非常感谢 :)

0 投票
2 回答
1284 浏览

django - Django 自定义管理器添加属性

我有一个看起来像这样的 Django 模型:

field1 实际上是 SomeObject 抽象类的 PK。

我想要一个自定义管理器,它对任何函数(all、filter、get 等)返回的每个值执行以下操作:

我已经测试过我可以像这样手动覆盖get:

但想知道是否有一种更简单的方法可以在所有功能中做到这一点。

会有很多人会说,“你为什么要这样做?”。它与遗留但仍处于活动状态的数据库的模型继承有关。

0 投票
1 回答
2916 浏览

django - Django 扩展对象管理器引发“NoneType”对象没有属性“_meta”

我正在尝试创建一个自定义对象管理器,如https://docs.djangoproject.com/en/dev/topics/db/managers/#modifying-initial-manager-querysets所述

我正在做这样的事情:

我认为不应该做任何事情。但是只要设置这个就可以了'NoneType' object has no attribute '_meta'。这怎么可能?我想我正在密切关注这个例子。

我检查并Alpha.objects在覆盖之前与之后的类型相同svGroup.objects.__class__.__bases__[0]()(因此它确实是子类的实例)。

我有一种感觉,这将是我更愚蠢的问题之一,但我无法弄清楚......

0 投票
6 回答
60266 浏览

python - 在 Django 的自定义管理器中捕获 DoesNotExist 异常

我有一个 Django 模型的自定义管理器。我似乎无法在这里捕捉到 DoesNotExist 异常。我知道如何在模型中做到这一点,但它在这里不起作用:

Get_object_or_404 也不起作用。这里有什么问题?