将 wagtail 管理员中的编辑者只能看到他们上传的图像?

Limit the images an editor in the wagtail admin sees to only those they uploaded?

我设置了 Wagtail 管理员,这样编辑者只能添加和编辑他们创建的博客页面。问题是,当使用图像选择器选择 select 图像时,他们能够看到上传到网站的每张图像。我需要他们只看到他们上传的图片。

我的网站已设置好,以便我的目标受众可以使用 django-allauth 注册一个帐户。注册后,他们会自动分配到自定义 'Author' 组。作者可以添加 'Profile' 页面,然后添加任意数量的 'stories' 或文章。故事是个人资料的子项,因此 URL 看起来像这样:网站。com/some_user/some_user_story.

这很好用,因为 'authors' 也只能创建、编辑和查看我想要的页面。但是当通过图像选择器将图像添加到他们的故事页面时,他们会显示 'Authors' 集合中的每张图像。这行不通,因为他们只能看到自己上传的图片。

据我了解,我所需要的并没有开箱即用的官方支持。但是我检查了数据库 tables 并且 wagtailimages_image table 确实跟踪 uploaded_by_user_id.

是否有 class、方法、挂钩或信号我可以覆盖以拦截和查询数据库以创建所需的行为?

确实有一个钩子已经到位了。我最终实现了 construct_image_chooser_queryset 挂钩。文档在这里:http://docs.wagtail.io/en/v2.5/reference/hooks.html#construct-image-chooser-queryset

在项目中,我有一个名为 'dashboard' 的应用程序,其中包含用于自定义 Wagtail 管理的所有代码。在该应用程序中,我创建了一个 wagtail_hooks.py 文件并添加了以下代码:

# Filter images in the image_chooser based on user
@hooks.register('construct_image_chooser_queryset')
def filter_images_by_user(images, request):
    images = images.filter(uploaded_by_user=request.user)

    return images

最后,我为 'Authors' 组创建了一个新的图片集。然后在 'Author' 组设置中添加该图像集合并为其分配 'add' 权限。

现在,当用户添加照片或使用图片选择器时,他们只会看到自己上传的图片。