当添加权限为 False 时,Django-grappelli 添加按钮在内联中可见

Posted

技术标签:

【中文标题】当添加权限为 False 时,Django-grappelli 添加按钮在内联中可见【英文标题】:Django-grappelli add button visible in inline when add permissions are False 【发布时间】:2013-04-04 16:50:36 【问题描述】:

我不确定这是我正在做的事情还是错误,但我在 TabularInline 中的添加按钮有一些奇怪的行为(django 管理员使用 grappelli)。我的内联类是:

class FieldInline(admin.TabularInline):
    model = models.Field
    classes = ('grp-collapse grp-closed',)

    fields = ('number', 'year', 'area')
    extra = 0

    def has_add_permission(self, request):
        return False

    def has_delete_permission(self, request, obj):
        return False

添加按钮在折叠内联表单集时出现,但在打开时消失。我曾尝试挖掘所涉及的 jquery,但我对该语言不是很熟悉,所以我不太确定我在寻找什么。

还有其他人有这种行为吗?有明显的解决办法吗?

【问题讨论】:

【参考方案1】:

这是一个错误。我在 github 上打开了一个问题,因为我们将它用作 Grappelli (https://github.com/sehmaschine/django-grappelli/issues/316) 的问题跟踪器。

查看后:隐藏按钮的可见性是一个css问题,用https://github.com/sehmaschine/django-grappelli/commit/da4d500c5e3b8f8dba5709b0378396131fad361d修复它

【讨论】:

谢谢!你知道如何修补它吗?我对 jquery 的了解太有限,不知道从哪里开始。 @catherine:是的。 不,我目前使用的是 Django 1.4 – 1.5 中的该错误是否有任何改进? 我用github.com/sehmaschine/django-grappelli/commit/…解决了这个问题【参考方案2】:

The new javascript made this impossible because the "Add Another" button was controlled by max_num, and ignored a value of 0. The javascript ignored a value of 0 because max_num has a default value of 0, and all the code using it had taken to equating max_num = 0 with being "off". So you can't actually have a maximum of 0. It's not possible.

Gabrial Hurley 创建了一个补丁,可以在不破坏其他任何内容的情况下恢复所需的行为。这是 3 年前的事了,我不知道它是否仍然适用于 Django 1.5。试试看:)

https://code.djangoproject.com/attachment/ticket/13023/13023_inlines_patch.diff

这是同一错误的票证(3 年前):

https://code.djangoproject.com/ticket/13023

来自凯文的经验:

I ran into the same issue because I had the static admin content in a directory that was outside of django's install. Copying the Django 1.5 static content from django/contrib/admin/static/admin/js/ to STATIC_ROOT/admin/js fixed the issue.

【讨论】:

感谢您的回答。从那时起,代码似乎发生了很大变化……我根本找不到补丁的上下文,但根据错误报告,它已被修复。不过,这看起来像是一个 js 问题,因为该按钮仅在其折叠时出现。将js复制过来似乎没有帮助。

以上是关于当添加权限为 False 时,Django-grappelli 添加按钮在内联中可见的主要内容,如果未能解决你的问题,请参考以下文章

当复选框 true 或 false 时从 DOM 中删除并重新添加

无法添加 publish_stream 权限

iOS Safari Web 扩展 - 当我们添加新的所需权限时,当前用户会发生啥

jdk 自动化脚本

当来自现有项目时,来自私人仓库的 NPM 添加失败,权限被拒绝

当 ShowsPlaybackControls 为 False 时,AVPlayerViewController 不会自动旋转视频