Как добавить пользовательскую кнопку, которая может использовать событие clicked в django admin.py
У меня есть модель, которая называется Record, модель имеет исходный код информации. Теперь я хочу добавить кнопку в админку сайта. Текущий код django admin.py выглядит так:
@admin.register(Record)
class ControlRecord(admin.ModelAdmin):
list_display = ["file_path", "go_to_src_code", "func_info", "line"]
search_fields = ['file_path', 'func_info']
list_filter = ['severity', 'is_misinformation']
actions = [jump_to_src_code]
def go_to_src_code(self, obj):
return format_html(
'<button onclick= "" >Go</button>'
)
go_to_src_code.short_description = "GoToSrcCode"
Я хочу указать указанный метод после нажатия на кнопку, что мне делать?
это зависит от следующего действия.
Вы хотите вызвать js функцию на представлении списка:
def jump_to_src_code(*args, **kwargs):
print('it works in python')
@admin.register(Record)
class ControlRecord(admin.ModelAdmin):
list_display = ["file_path", "go_to_src_code", "func_info", "line"]
search_fields = ['file_path', 'func_info']
# list_filter = ['severity', 'is_misinformation']
actions = [jump_to_src_code]
class Media:
js = ('myjs.js')
def go_to_src_code(self, obj):
return mark_safe('<button onclick= "alert(\'it works in js\'); // call function from myjs.js" >Go</button>')
go_to_src_code.short_description = "GoToSrcCode"
щелчком мыши вы запускаете js:
Вы хотите вызвать специальное действие администратора:
def jump_to_src_code(*args, **kwargs):
print('it works in python')
@admin.register(Record)
class ControlRecord(admin.ModelAdmin):
list_display = ["file_path", "go_to_src_code", "func_info", "line"]
search_fields = ['file_path', 'func_info']
# list_filter = ['severity', 'is_misinformation']
actions = [jump_to_src_code]
# class Media:
# js = ('myjs.js')
def go_to_src_code(self, obj):
action_name = 'jump_to_src_code'
action_index_in_action_list = '1'
return mark_safe(f"""
<input type="hidden" name="_selected_action" value="{obj.id}">
<input type="hidden" name="action" value="{action_name}">
<button type="submit" name="index" value="{action_index_in_action_list}">Go</button>"""
)
go_to_src_code.short_description = "GoToSrcCode"
это дает вам возможность вызвать вашу функцию действия в python.