[Python] Come aggiungere il pulsante accanto al pulsante Aggiungi utente nel sito di amministrazione di Django



Answers

Sebbene altre risposte siano interamente valide, penso che sia importante notare che non è assolutamente necessario aggiungere un pulsante per ottenere tale comportamento. Puoi utilizzare le azioni di amministrazione, come hai fatto per l'azione make_published .

Questo ha il vantaggio di non richiedere l'override di alcun modello e quindi di evitare potenziali problemi durante l'aggiornamento della versione di django (poiché i modelli di amministrazione potrebbero cambiare e le modifiche potrebbero non essere "compatibili" con il modo in cui l'hai sovrascritto).

import csv

from django.http import HttpResponse
from django.utils import timezone

def export_as_csv(modeladmin, request, queryset):
    opts = modeladmin.model._meta
    filename = format(timezone.now(), "{app}_{model}-%Y%m%d_%H%M.csv").format(
        app=opts.app_label, model=opts.model_name)

    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename)

    writer = csv.writer(response)
    field_names = [f.get_attname() for f in opts.concrete_fields]
    writer.writerow(field_names)
    for obj in queryset.only(*field_names):
        writer.writerow([str(getattr(obj, f)) for f in field_names])

    return response

Le azioni di amministrazione sono fatte per questo, aggiungendo un pulsante personalizzato è un passo più vicino alla "sovra-personalizzazione", il che significa che è probabilmente il momento di scrivere le proprie visualizzazioni.

L'amministratore ha molti aggancio per la personalizzazione, ma attenzione a cercare di utilizzare esclusivamente questi hook. Se è necessario fornire un'interfaccia più incentrata sui processi che elimini i dettagli dell'implementazione delle tabelle e dei campi del database, è probabile che sia il momento di scrivere le proprie visualizzazioni.

Citazione dal paragrafo introduttivo della documentazione di Django Admin

Question

Sto lavorando a Django Project, dove ho bisogno di estrarre la lista degli utenti per eccellere dalla schermata degli utenti di Django Admin. Ho aggiunto actions variabili di actions alla mia classe di esempio per ottenere il CheckBox prima dell'id di ciascun utente.

class SampleClass(admin.ModelAdmin):
    actions =[make_published]

L'azione make_published è già definita. Ora voglio aggiungere un altro pulsante accanto a Add user pulsante Add user come mostrato in fig. . Ma non so come posso ottenere questo risultato senza usare un nuovo modello. Voglio usare quel pulsante per stampare i dati utente selezionati per eccellere. Grazie, per favore guidami.




Links