ModelAdmin.list_display = ('hoge',)
Les méthodes personnalisées pour les modèles qui retournent Bool peuvent être spécifiées directement. Vous pouvez également spécifier «unicode» ou «str».
ModelAdmin.list_display = ('__str__', 'model_custom_method')
Par défaut, celui affiché à l'extrême gauche a un lien
ModelAdmin.list_display = ('hoge', 'fuga')
ModelAdmin.list_display_links = ('fuga',)
ModelAdmin.list_display = ('custom_hoge',)
def custom_hoge(self, obj):
return u'Hoge'
custom_hoge.short_description = u'Afficher un nom'
custom_hoge.allow_tags = True #autorisation de balise html
Pour les entrées utilisateur, il est recommandé de s'échapper en utilisant la fonction format_html ('hoge')
.
ModelAdmin.ordering = ('created_at',) #Trier par heure de création
ModelAdmin.actions = ['hoge'] #Liste des fonctions définies, etc.
ModelAdmin.actions_on_top = True #Affiché en haut de la page
ModelAdmin.actions_on_bottom = True #Affiché en bas de page
Etant donné que tout le tri Django est effectué au niveau de la requête de la base de données, les champs qui n'ont pas réellement de colonnes dans la base de données ne peuvent pas être triés. Cependant, lorsqu'un champ personnalisé remplace un certain champ, vous pouvez le trier en spécifiant le nom du champ.
ModelAdmin.list_display = ('number_str',)
#nombre est un nombre(int)Rendre
def number_str(self, obj):
return str(obj.number)
number_str.admin_order_field = 'number'
list_display
StackOverflow Django admin: how to sort by one of the custom list_display fields that has no database field
Il existe deux méthodes de spécification
fields
ModelAdmin.readonly_fields
, mais ne peuvent pas être modifiéslist_display
etc., vous ne pouvez spécifier que le champ Model ou ModelAdmin.form
ModelAdmin.fields = ('hoge', 'fuga') # hoge,Seul le champ fuga est ajouté et modifié lors de la mise à jour
ModelAdmin.fields = (('hoge', 'fuga'), 'piyo') # hoge,fuga s'affiche sur la même ligne
exclude
ModelAdmin.exclude = ('hoge',) #hoge n'est pas modifiable
#Définir le modèle en ligne
class SomeForeignKeyModelInline(admin.TabularInline):
model = SomeForeignKeyModel
#Ajouter à l'écran de gestion du modèle dont vous souhaitez afficher le modèle Inline
class HogeAdmin(admin.ModelAdmin):
list_display = ('hoge', 'fuga')
inlines = [SomeForeignKeyModelInline]
ModelAdmin.fieldsets = (
( 'Nom', {'Nom de l'option': ('Valeur d'option',)} ),
(None, {
'fields': ('hoge', 'fuga')
}),
)
Par défaut, ModelForm
générera un formulaire pour l'écran de gestion, mais vous pouvez également spécifier votre propre formulaire personnalisé.
ModelAdmin.form = HogeForm
stackOverflow: django admin - add custom form fields that are not part of the model
Hook avec la méthode get_form
ModelAdmin.get_form(request, obj=None, **kwargs)
Le modèle original de l'écran de gestion est stocké dans contrib / admin / template / admin
.
Pour écraser, ajoutez ʻadmin / dans le répertoire défini par
TEMPLATE_DIR`.
Ajoutez la cible de gestion que vous souhaitez écraser sous le répertoire ci-dessus avec ʻapp_name / modelname / `. Le modèle sous le nom de l'application est appliqué à tous les modèles sous l'application. Les modèles sous le nom du modèle sont appliqués uniquement à l'écran de gestion de ce modèle. Tous les noms de répertoires sont en minuscules.
Fondamentalement, il est plus efficace d'écraser uniquement les pièces nécessaires.
Exemple: Si vous souhaitez écraser l'écran de la liste des modèles fuga de l'application hoge ʻCreate admin / hoge / fuga / change_list.html`.
Après cela, écrasez le {% block%}
que vous souhaitez modifier comme suit.
{% extend 'admin/change_list.html' %}
{% block 'content' %}
<!--
Formulaires et variables que vous souhaitez ajouter
-->
{{ block.super }}
{% endblock 'content' %}
Si vous souhaitez ajouter votre propre fonction à l'écran de gestion, un mémo du travail éventuellement nécessaire
Ajoutez une URL qui fournit vos propres fonctionnalités. Vous devez personnaliser l'URL que l'écran d'administration de Django génère par défaut.
Utilisez get_urls
.
from django.conf.urls import url
from django.http import HttpResponse
class HogeAdmin(admin.ModelAdmin):
def get_urls(self):
urls = super(HogeAdmin, self).get_urls()
my_urls = [
url(r'^hoge/$', self.admin_site.admin_view(self.hoge), name='hoge'),
]
return my_urls + urls
def hoge(self, request):
return HttpResponse('OK')
self.admin_site.admin_view
donne la vérification des permissions et never_cache
à la vue que vous voulez ajouter.
En gros, il vaut mieux l'envelopper avec ça.
Notez l'ordre de return my_url + urls
. Si vous ne mettez pas my_urls
en premier, l'URL standard de l'écran de gestion sera priorisée.
Je ne peux pas accéder à la vue de ma propre URL définie.
Remplacer le comportement de chaque fonction d'affichage
class HogeAdmin(admin.ModelAdmin):
#Exemple d'écrasement de l'opération de l'écran de liste
def changelist_view(self, request, extra_context=None):
extra_context = extra_context or {}
extra_context['hoge'] = 'hoge'
return super(HogeAdmin, self).changelist_view(request, extra_context=extra_context)
StackOverflow Multiple ModelAdmins/views for same model in Django admin
Recommended Posts