Django-fr

Forum

  • Accueil
  • » Django-fr
  • » [RESOLU]Débutant en Django blocage sur tuto04 vue génériques

#1 19-05-2014 15:19:37

xavril
Membre
Inscription : 15-05-2014
Messages : 3

[RESOLU]Débutant en Django blocage sur tuto04 vue génériques

Bonjour,
Je suis complètement débutant en django. J'ai pris le parti de suivre le tuto du site Djangoproject.com et je bloque sur la page https://docs.djangoproject.com/fr/1.6/intro/tutorial04/.
Dans les vues génériques j'arrive bien à faire fonctionner la page ListView dans laquelle la liste de mes articles s'affichent , dans le template chaque ligne article contient

<td><a href="{% url 'artdetail' art.ident %}">{{art.ident}}</a></td>

mais quand je clique sur l'article à visualiser (appel de la DetailView avec une url de la forme <appli>/pk) Django me renvoie une erreur
"DetailView is missing a queryset. Define DetailView.model, DetailView.queryset, or override DetailView.get_queryset()."
Donc je pense qu'il manque des indications dans l'exemple de la classe DetailView, je ne comprend pas comment la classe générique reçoit la clé (art.ident).
Merci pour votre aide. smile

Dernière modification par xavril (26-05-2014 16:57:25)

Hors ligne

#2 26-05-2014 08:07:13

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : [RESOLU]Débutant en Django blocage sur tuto04 vue génériques

Bonjour,

Ta vue détaillée ne doit pas être bonne. Il doit te manquer:
```
model = Poll
```

(https://docs.djangoproject.com/fr/1.6/i … mend-views)

Hors ligne

#3 26-05-2014 11:06:23

xavril
Membre
Inscription : 15-05-2014
Messages : 3

Re : [RESOLU]Débutant en Django blocage sur tuto04 vue génériques

Super merci pour ta réponse mais ...
j'ai bien mis
...
model = Poll
...
et je suis toujours dans l'impasse.
Je t'envoie mes fichiers ma base s'appelle Odre et la clé pk est alpha numérique.

voici mon urls.py

urlpatterns = patterns('odmgest.views',
    # Examples:
    # url(r'^$', 'odm.views.home', name='home'),
    # url(r'^odm/', include('odm.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'^home/$','liste'),
    url(r'^$',ListeOrdre.as_view(),name="odmlist"),
    url(r'^(?P<pk>\w+)/$',DetailView.as_view(),name="odmmaj"),
    url(r'^new/$',CreeOrdre.as_view(),name="odmnew"),
    )

mon views.py

class ListeOrdre(ListView):
    model = Ordre
    context_object_name="liste_ODM"
    queryset=Ordre.objects.all()
    paginate_by=10
    

class DetailOrdre(DetailView):
    model = Ordre
    template_name='odmgest/detail_ordre.html'

le template ordre_list.html (qui marche):

<h1>Liste des ODM</h1>

<p> Choisissez un ODM à modifier ou ... 
<input type="submit" value="Créer un ODM" /></p>
<table>
    <tr> 
        <td>Id. ODM</td>
        <td>Intervenant</td>
        <td>Date</td>
    </tr>
{% for o in liste_ODM %}
    <tr>
        <td><a href="{% url 'odmmaj' o.ident %}">{{o.ident}}</a></td>
        <td>{{o.interv}}</td>
        <td>{{o.date}}</td>
    </tr>
{% endfor %}
{# Mise en forme de la pagination ici #}
{% if is_paginated %}
    <div class="pagination">
           {% if page_obj.has_previous %}
               <a href="?page={{ page_obj.previous_page_number }}">Précédente</a> —
           {% endif %}
           Page {{ page_obj.number }} sur {{ page_obj.paginator.num_pages }} 
           {% if page_obj.has_next %}
              — <a href="?page={{ page_obj.next_page_number }}">Suivante</a>
           {% endif %}
    </div>
{% endif %}
</table>

mon ordre_detail.html

<h1>Detail de l'ordre : {{ ordre.ident }}</h1>
    <p>Type: {{ordre.typodm.nom}}<br />
    Intervenant : {{ordre.intervenant.nom}}<br />
    Client : {{ordre.client.nom}}<br />
    </p>

Merci pour ton aide. smile

Hors ligne

#4 26-05-2014 12:56:06

Hotshot92
Membre
Inscription : 30-12-2013
Messages : 4

Re : [RESOLU]Débutant en Django blocage sur tuto04 vue génériques

Bonjour,
Essaie de changer ton url "odmmaj" pour pointer vers  "DetailOrdre.as_view()" plutôt que vers "DetailView.as_view()".

Hors ligne

#5 26-05-2014 16:56:33

xavril
Membre
Inscription : 15-05-2014
Messages : 3

Re : [RESOLU]Débutant en Django blocage sur tuto04 vue génériques

Evidemment ça marche beaucoup mieux pffff.... roll
Quand on a trop la tête dans le guidon .... on ne voit pas les détails wink
Encore merci, smile

Hors ligne

  • Accueil
  • » Django-fr
  • » [RESOLU]Débutant en Django blocage sur tuto04 vue génériques

Pied de page des forums