gpt4 book ai didi

django - Wagtail:内联面板外键的过滤结果

转载 作者:行者123 更新时间:2023-12-03 09:40:12 25 4
gpt4 key购买 nike

这些模型允许我为一个工具建立多个人工“编辑器”:

class ToolPageEditors(models.Model):
person = models.ForeignKey('people.UserProfile')
page = ParentalKey('ToolPage', related_name='toolpage_editors')


class ToolPage(BaseAsset):
content_panels = BaseAsset.content_panels + [
InlinePanel('toolpage_editors', label="Tool Editors")
]

但随后每个 ToolPageEditors实例是一个拥有 3,000 多个用户的下拉列表。我想将该下拉列表的内容限制为给定组中的人员。我知道如何通过覆盖管理表单在 Django 中执行此操作,但是我无法弄清楚如何在 Wagtail 中完成它。

建议?谢谢。

更新:

关键是 limit_choices_to .修改类如下,它的工作原理:
class ToolPageManagers(models.Model):
def get_tool_editors():
g = Group.objects.get(name='Tool Editors')
return {'groups__in': [g, ]}

person = models.ForeignKey('people.UserProfile', limit_choices_to=get_tool_editors)
page = ParentalKey('ToolPage', related_name='toolpage_editors')

最佳答案

答案是对原始问题的更新,粘贴在下面,并附有一些文档链接。

您可以通过 kwarg limit_choices_to 限制 Django 模型的外键关系的可用选择。 .

注意:这将为关系添加限制,而不仅仅是 UI 中可用的选项。

示例代码

class ToolPageManagers(models.Model):
def get_tool_editors():
g = Group.objects.get(name='Tool Editors')
return {'groups__in': [g, ]}

person = models.ForeignKey('people.UserProfile', limit_choices_to=get_tool_editors)
page = ParentalKey('ToolPage', related_name='toolpage_editors')

欲了解更多关于 Wagtail 的信息 InlinePanel参见 Wagtail 文档 - https://docs.wagtail.io/en/latest/reference/pages/panels.html#inline-panels

关于django - Wagtail:内联面板外键的过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40554215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com