Django "xxxxxx Object" visualizza la personalizzazione nella barra laterale dell'azione di amministrazione




django-models django-admin (4)

È necessario definire, quale colonna si desidera visualizzare ...

per esempio:

class POAdmin(admin.ModelAdmin):
    list_display = ('qty', 'cost', 'total')

Vorrei modificare il comportamento predefinito di come la barra laterale delle modifiche recenti dell'amministratore visualizza il nome di "oggetti" aggiunti. Fare riferimento alla foto qui sotto:

Vorrei cambiare il modo in cui questi sono nominati nell'Admin. Idealmente, mi piacerebbe essere in grado di cambiarlo da "MyModelName object" a, come nell'esempio di oggetto "Policy", qualcosa come "Policy: {{valore del campo" Nome criterio "della politica.}}.

Stavo pensando che __unicode__ per il mio modello Patient ha gestito questo, ma non sembra. Qualsiasi assistenza è apprezzata.


Hai ragione nel pensare che __unicode__ faccia. Ho questo in questo momento:

class Film(models.Model):
    title = models.CharField(max_length=200)
    ...
    def __unicode__(self):
        return self.title

Quando guardo nell'elenco delle azioni recenti, vedo il titolo del film che ho appena modificato.


La stringa che stai vedendo proviene dal metodo __unicode__ , come altri hanno menzionato. Ma la cosa è che admin salva la rappresentazione di stringa di un oggetto quando crea un evento di log, quindi se aggiungi un'implementazione __unicode__ dopo che la voce di log è stata salvata, non vedrai nuovi titoli sui vecchi oggetti, solo dopo aver fatto qualche nuova attività


Le risposte che citano i metodi __str__ e __unicode__ sono corrette. Tuttavia, come indicato nella docs , dalla versione 1.6 (credo), puoi usare il decoratore python_2_unicode_compatible sia per Python 2 che per Python 3:

from __future__ import unicode_literals
from django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible
class MyClass(models.Model):
    def __str__(self):
        return "Instance of my class"

È possibile utilizzare quanto sopra anche in oggetti non di Model .





django-admin