Czy istnieje mimo to opcja list_editable opcjonalna dla baz obiektów? Na przykład atrybut pola tylko do odczytu ma tę opcję, która nie ma wpływu na widok listy zmian.Django warunkowe admin list_editable
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
To samo można osiągnąć dla display_zestawu i niektórych innych atrybutów. Wygląda na to, że nie ma metody "get_list_editable_fields".
Chcę, aby niektóre wiersze były niezmienne oczywiście, ale inne niż podnoszenie wulgarnego błędu nie działa. Nie znalazłem żadnej dokumentacji na temat atrybutu ani
Czy w jakiś sposób można renderować widżet za pomocą programu pobierającego listę_listy?
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
aktualizacja za pomocą zwrotnej Alasdair za:
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
)
Nie rozumiem, jak uzyskać bieżące wystąpienie w sposobie, biegnę za pomocą metody dla każdego wiersza, ale jest kwargs pusty? zobacz moje zaktualizowane pytanie – trb
Nie jestem pewien, jaka jest odpowiedź, jesteś dość głęboko w kodzie administratora! Konieczne może być również zastąpienie 'get_changelist_form'. Powodzenia! – Alasdair
Ustawiłem to na właściwej ścieżce. W końcu dwukrotnie zarejestrowałem model na administratorze (który wymaga hackowania modelu proxy) i stworzono własny zestaw reguł administratora. Ten wymóg naprawdę uderza w granice administratora django :-) – trb