在 wagtailadmin 的 limit_choices_to 中使用 或 Q() 对象

2024-02-20

姜戈 1.10.5

def limit_contributor_choices():
    limit = Q(group__name="contributor") | Q(group__name="Group")
    return limit


author = models.ForeignKey(
    settings.AUTH_USER_MODEL,
    blank=True, null=True,
    limit_choices_to=limit_contributor_choices,
    verbose_name=_('Author'),
    on_delete=models.SET_NULL,
    related_name='author_pages',
)

使用以下代码,如果用户属于多个组,则查询会多次返回该用户。如何获得不同的值?

我在 wagtail 管理中使用它,其中自动生成下拉列表。

也许另一种看待它的方法是重写查询集并添加distinct()?如果是这样,我不知道如何在 wagtailadmin 中覆盖它


一个可能的技巧是编译用户 ID 列表,然后将其作为过滤条件返回:

def limit_contributor_choices():
    allowed_user_ids = User.objects.filter(Q(group__name="contributor") | Q(group__name="Group")).values_list('id', flat=True)
    return Q(id__in=allowed_user_ids)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 wagtailadmin 的 limit_choices_to 中使用 或 Q() 对象 的相关文章

随机推荐

  • 数据绑定 TextBlock 在 Silverlight / WP7 中运行

    我在 Windows Phone 7 上使用 Silverlight 我想以粗体显示 TextBlock 中某些文本的第一部分 其余部分以普通字体显示 完整的文本必须换行 我希望粗体部分包含来自 ViewModel 中一个属性的文本 而纯文
  • 如何解决错误:当应用程序未在 UserInteractive 模式下运行时显示模式对话框或表单不是有效操作

    我正在做项目 在我的系统中 当我运行该项目时 它运行良好 但是当我检查时将其上传到我的域后 它会显示如下错误 当应用程序未在 UserInteractive 模式下运行时显示模式对话框或表单不是有效操作 指定 ServiceNotifica
  • 布局之间的淡入淡出效果

    作为对象 我将重现两个布局之间的淡入淡出效果 现在我有这样的情况 LinearLayout l LinearLayout l2 要在它们之间切换我用过 l setVisibility View GONE l2 setVisibility V
  • 上传项目后在 github 上的 django 项目中隐藏密钥

    我在 github 上上传了我的 django 项目 并且我的项目有很多提交 我不想删除我的项目并再次重新上传 将项目上传到 github 并进行大量提交后隐藏密钥的最简单方法是什么 在同一目录中manage py是 创建一个文件 其名称为
  • C++20 从带括号的值列表初始化聚合,不支持内部数组

    采用 C 20p0960 https wg21 link p0960 允许从带括号的值列表初始化聚合 确切的措辞 dcl init 17 6 2 2 https eel is c draft dcl init 17 6 2 2 says 如
  • jQuery 将 DIV 复制到另一个 DIV 中

    需要一些 jquery 帮助将一个 DIV 复制到另一个 DIV 中 并希望这是可能的 我有以下 HTML div class container div class button div div 然后我在页面的另一个位置有另一个 DIV
  • 在 crate 的 API 中发布具体类型而不是“impl Trait”有什么优势?

    在修补箱子时 我自己隐藏了内部迭代器类型 但作者说发布类型是一项功能 最佳实践是为公共 API 中公开的每个迭代器发布显式包装器结构 显然 Rust 标准库对其所有迭代器都执行此操作 为什么要这样做 更具体地说 如果实现兼容的类型std e
  • 如何查找字符串中某个字符出现的数组

    我正在 PHP 中搜索一个函数来返回字符串中字符的位置数组 输入这些参数 hello world i 将返回 4 7 提前致谢 无需循环 str Hello World letter o letterPositions array keys
  • 获取 numpy 中唯一行的位置的更快方法是什么

    我有一个唯一行的列表和另一个更大的数据数组 在示例中称为 test rows 我想知道是否有一种更快的方法来获取数据中每个唯一行的位置 我能想到的最快的方法是 import numpy uniq rows numpy array 0 1 0
  • if 条件 vs &&,是否有任何性能提升

    如果用户是所有者 我有一个条件要检查删除和文章 delete article if user owner 另一种方法是 user owner delete article 选择其中任何一个有什么好处还是它只是一种写作风格 性能不太可能成为该
  • 在 PostgreSQL 中正确处理 TIME AND TIME ZONE

    我们有一个表 其中填充了来自另一个系统的遗留报告的数据 该表的列反映了报告的相同结构 以下是该表的缩写结构 CREATE TABLE IF NOT EXISTS LEGACY TABLE REPORT DATE DATE NOT NULL
  • 如何保护 imap_open 连接的安全

    我使用 imap open 与我的邮件服务器建立连接以检查退回的电子邮件 pop3conn imap open localhost 110 pop3 MAILLOGIN MAILPWD if pop3conn false echo br n
  • 从 Github 安装 Gson

    我刚刚开始学习 Java 我正在开发的一个新项目需要 Gson 我觉得我在网上找到的所有安装说明中缺少了一些东西 它们都引用了我应该能够从 zip 文件中提取的三个 jar 文件 但是当我在 github 上查看 Gson 时 我找不到任何
  • SQL:将具有开始/结束的行扩展为单独的行

    我有这样的记录 start end total 830 1300 5 1400 1430 2 我想扩展到 instance total 830 5 831 5 832 5 1299 5 1300 5 1400 2 1401 2 1429 2
  • 触摸命令在 VSC 终端中不起作用

    我是新手 仍在尝试弄清楚如何配置我的开发环境 我在 Visual Studio Code 中使用 touch 命令时遇到错误 我可以用mkdir可以创建目录 但无法创建 php文件 这是我收到的错误 有任何想法吗 谢谢你 touch 术语
  • C++ 中的结构体和 C# 中的结构体有区别吗?

    C 中的结构体和 C 中的结构体有区别吗 在 C 中 您使用结构体来定义值类型 而不是由classes 在 C 中 结构体与类具有相同的默认可访问性级别public 所以问题应该是 C 中的结构与 C 中的类不同吗 是的 它们是 不能从 C
  • 读入文件内容rails

    我有一个表单正在尝试读取 JSON 文件以进行解析 操作 等 我在控制器中读取它时遇到问题 View 控制器 def upload json file data params datafile File read file data do
  • vim autocmd 静默执行

    我的 vimrc 文件以这样的方式配置 每次保存 Python 文件或输入 python 缓冲区 也适用于 Matlab 和 Latex 但都是相同的 时 它会默默地执行丰富的 ctags set tags tags autocmd Buf
  • 在 C# 中获取 GMT 纪元

    我需要获取 GMT 纪元的毫秒数 我可以将其用于 GMT 部分吗 DateTime Now ToUniversalTime 自纪元以来的毫秒数怎么样 这应该给你一个与时区无关的答案 TimeSpan t DateTime UtcNow ne
  • 在 wagtailadmin 的 limit_choices_to 中使用 或 Q() 对象

    姜戈 1 10 5 def limit contributor choices limit Q group name contributor Q group name Group return limit author models For