Как добавить пользовательскую кнопку логического действия в Django Admin? - PullRequest
0 голосов
/ 24 января 2019

У меня есть модель, которая зарегистрирована с администратором.

models.py
class Post(models.Model):
    title = models.CharField(max_length=100)
    tag = models.CharField(max_length=3)
    is_enabled = models.BooleanField(default=False)

Теперь я хочу, чтобы администратор мог включить или отключить публикацию только путем взаимодействия с полем is_enabled модели.

admin.py
class PostAdmin(admin.ModelAdmin):
    list_display = ['id', 'title', 'tag', 'is_enabled']
    list_display_links = None
    readonly_fields = ['id', 'title', 'tag']

    actions = ['enable_selected', 'disable_selected']

    def enable_selected(self,requst,queryset):
        queryset.update(is_enabled=True)

    def disable_selected(self,requst,queryset):
        queryset.update(is_enabled=False)

    enable_selected.short_description = "Enable the selected Post"
    disable_selected.short_description = "Disable the selected Post"

Я успешно добавил эти действия в раскрывающемся списке, однако мне нужно добавить это в виде кнопки в списке, а также мне нужно знать, как я могу вызвать функцию при нажатии кнопки для обновления поля is_enabled .

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать list_editable

list_editable = ['is_enabled']

Не забудьте добавить is_enabled в list_display (ModelAdmin) также

...