小编use*_*888的帖子

只读Django admin inline中的现有项目的Readonly

我在Django管理员中有一个表格内联模型.我需要1个字段在创建后不可更改,但将其设置为readonly(通过readonly_fields),工作正常,但在单击"添加其他项目"而不是下拉列表时将字段转换为标签.

有没有办法保持字段只读,但仍允许使用正确的字段输入创建新项目?

谢谢!

托马斯

编辑:管理通过自定义小部件来计算出来

class ReadOnlySelectWidget(forms.Select):
    def render(self, name, value, attrs=None):
        if value:
            final_attrs = self.build_attrs(attrs, name=name)
            output = u'<input value="%s" type="hidden" %s />' % (value, flatatt(final_attrs))
            return mark_safe(output + str(self.choices.queryset.get(id=value)))
        else:
            return super(ReadOnlySelectWidget, self).render(name, value, attrs)
Run Code Online (Sandbox Code Playgroud)

如果有值,它只会将其变为隐藏,在每种情况下都不会起作用(仅适用于1个只读字段).

django django-admin

21
推荐指数
3
解决办法
1万
查看次数

Django对内联表单的管理验证,它依赖于所有表单之间的字段总数

请原谅我,如果之前已经回答过,我找不到答案,其中验证取决于内联表格的汇总.

一点背景:我正在为一家保险经纪人做一个网站,该网站有"政策"和该政策的"全面委员会".还有"经销商"被添加到"政策"中,并附带佣金(可以有任意数量的经销商).经销商之间的佣金总额必须低于佣金总额.

我有一个策略的admin.ModelForm,下面我有一个admin.InlineTabular,通过"添加"按钮可以有多个经销商,这一切都很完美.

但是,我似乎无法弄清楚如何对它们进行验证,因此我基本上可以将所有佣金加起来然后如果它大于总佣金则抛出ValidationError.

我已经尝试过clean()但是如果它甚至可用,我不知道如何访问InlineTabular清理数据!

在此先感谢您的帮助!

托马斯

django validation inline admin

16
推荐指数
1
解决办法
7375
查看次数

标签 统计

django ×2

admin ×1

django-admin ×1

inline ×1

validation ×1