2017-05-23 1 views
0

J'utilise avec succès Wagtail's wagtail.contrib.modeladmin pour rendre un modèle Django régulier éditable à partir de l'admin Wagtail. J'aimerais créer un hyperlien vers les vues modeladmin "create" et "edit" de mon template. Quel est le "nom" de l'URL que je peux utiliser pour référencer ces vues? Il ne semble pas y avoir de module urls dans wagtail.contrib.admin et aucune documentation à ce sujet.Liaison directe aux vues Wagtail modeladmin

Voici mon directory application de models.py:

from django.db import models 

class Organisation(models.Model): 
    title = models.CharField(max_length=255) 
    logo = models.ImageField(upload_to='logos', blank=True) 
    ... 

Et urls.py mon projet:

from django.conf.urls import include, url 

urlpatterns = [ 
    url(r'^admin/', include(wagtailadmin_urls)), 
    ... 
    url(r'^directory/', include('directory.urls')), 
] 

Répondre

2

Le nom de l'URL sera de la forme suivante, où [action] est l'un des index, create, edit, delete, inspect ou choose_parent:

[app_label]_[model_name]_modeladmin_[action] 

Par exemple:

  • {% url 'directory_organisation_modeladmin_index' %}
  • {% url 'directory_organisation_modeladmin_create' %}
  • {% url 'directory_organisation_modeladmin_edit' instance_pk=37 %}
  • {% url 'directory_organisation_modeladmin_delete' instance_pk=37 %}
  • {% url 'directory_organisation_modeladmin_inspect' instance_pk=37 %}
  • {% url 'directory_organisation_modeladmin_choose_parent' %}

Étant donné que le URLConf fourni ne contient pas d'espace de noms à include(), aucun espace de noms n'est requis.

Semblable à Admin intégré de Django, Wagtail génère ces URL dynamiquement dans le ModelAdmin.get_admin_urls_for_registration() avec quelques aides comme AdminURLHelper.get_action_url_name().