オブジェクトごとにlist_editableをオプションにすることはできますか?たとえば、readonly fields属性にはこのオプションがあり、changelist_viewには影響しません。Django条件付き管理者リスト_編集可能
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ゲッターでウィジェットをレンダリングすることは可能でしょうか?
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
)
を、私はそれぞれの行のためのメソッドを介して実行されますが、kwargsからです空の?私の更新された質問を参照してください – trb
私は答えが何であるか分かりません、あなたは管理コードのかなり深いです!/get_changelist_formをオーバーライドする必要があるかもしれません。がんばろう! – Alasdair
これは正しい軌道に乗ってくれました。私は管理者にモデルを2回登録することになりました(プロキシモデルのハックが必要です)。独自の管理ルールセットを作成しました。この要件は本当にdjango管理者の境界を打つ:-) – trb