gpt4 book ai didi

Django 条件管理 list_editable

转载 作者:行者123 更新时间:2023-12-02 10:35:07 27 4
gpt4 key购买 nike

是否有办法使 list_editable 在每个对象的基础上可选?例如readonly fields属性有这个选项,它不会影响changelist_view。

class MyAdmin(admin.ModelAdmin):
readonly_fields = ('foo',)

def get_readonly_fields(self, request, obj=None):
fields = super(MyAdmin, self).get_readonly_fields(request, obj=obj)

if obj.status == 'CLOSED':
return fields + ('bar',)
return fields

对于 list_display 和其他一些属性也可以实现相同的效果。似乎没有方法“get_list_editable_fields”。

我希望某些行显然是不可变的,但除了引发粗俗错误之外似乎不起作用。我也没有找到任何有关该属性的文档

是否可以通过 list_display getter 渲染小部件?

class MyAdmin(admin.ModelAdmin):
list_display = ('get_bar',)
list_editable = ('get_bar',)

def get_bar(self, obj):
return widget or str(obj.bar) # ???
get_bar.allow_tags = True

使用 Alasdair 的反馈进行更新:

def get_changelist_formset(self, request, **kwargs):
"""
Returns a FormSet class for use on the changelist page if list_editable
is used.
"""
# I run through this code for each row in the changelist, but there's nothing in kwargs, so I don't know how to use the instance as a guide to which fields should be in list_editable?

defaults = {
"formfield_callback": partial(self.formfield_for_dbfield, request=request),
}
defaults.update(kwargs)
return modelformset_factory(
self.model, self.get_changelist_form(request), extra=0,
fields=self.list_editable, **defaults
)

最佳答案

正如您所说,没有 get_list_editable 方法。

尝试覆盖 get_changelist_formset方法。我认为您需要复制整个方法,并更改传递给 modelformset_factory 的字段列表。

关于Django 条件管理 list_editable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33416059/

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