2017-08-27 1 views
0

J'utilise Django pour une application, et je m'interroge sur une option dans l'admin. Est-il possible que l'administrateur django redirige vers la page de détails d'un objet, s'il n'en existe qu'un seul dans la liste?Django admin: rediriger vers la page de changement d'objet si un seul existe dans la liste

Par exemple, si que cet objet existe: enter image description here

redirect immédiatement à la vue du changement sur cet objet, sans avoir besoin de l'utilisateur de cliquer sur l'objet.

Je n'utilise aucune vue personnalisée. Je n'ai pas trouvé de solution après 2 heures de recherche.

Merci!

+1

Vous pouvez remplacer ['ModelAdmin.changelist_view'] (https://docs.djangoproject.com/fr/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.changelist_view). Dans là, vérifiez si un seul objet existe pour le modèle donné. Si oui, rediriger vers la page de changement. – xyres

Répondre

2

Vous pouvez essayer cette

def changelist_view(self, request, extra_context=None): 
    if self.model.objects.all().count() == 1: 
     obj = self.model.objects.all()[0] 
     return HttpResponseRedirect(reverse("admin:%s_%s_change" %(self.model._meta.app_label, self.model._meta.model_name), args=(obj.id,))) 
    return super(ItemAdmin, self).changelist_view(request=request, extra_context=extra_context) 

Vérifiez également changelist_view paramètres basés sur la version django.

+0

Merci! Avec un peu de personnalisation, cela a résolu mon problème! – Yarimi