这些模型允许我为一个工具建立多个人工“编辑器”:
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")
]
Run Code Online (Sandbox Code Playgroud)
但是每个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')
Run Code Online (Sandbox Code Playgroud)
答案是对原始问题的更新,并在下面粘贴了一些文档链接。
您可以通过 kwarg 限制 Django 模型的外键关系的可用选择limit_choices_to。
注意:这将为关系添加限制,而不仅仅是 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')
Run Code Online (Sandbox Code Playgroud)
For more information about Wagtail's InlinePanel see the Wagtail docs - https://docs.wagtail.io/en/latest/reference/pages/panels.html#inline-panels
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |