7
votes

Vue générique Django - Accès à la demande

J'utilise des vues génériques Django, comment accédez-moi à la demande de mon modèle.

URL: p>

file_objects = {
    'queryset' : File.objects.filter(is_good=True),
}
urlpatterns = patterns('',
    (r'^files/', 'django.views.generic.list_detail.object_list', dict(file_objects, template_name='files.html')),
)


0 commentaires

4 Réponses :


9
votes

Après plus de recherches, en attendant des gens pour répondre à cela. J'ai trouvé:

Vous devez ajouter ceci à vos paramètres.py xxx

ceci signifie que par défaut, la demande sera transmise à tous les modèles! < / p>


2 commentaires

Pas strictement vrai - il sera transmis à tous les modèles rendu à l'aide d'un requierContext , quelles vues génériques sont.


Cela n'a pas fonctionné pour moi, en utilisant Django 1.7 quatre ans et demi plus tard. En fait, les 1.7 docs ont un avertissement en haut de docs.djangoproject.com/fr /1.7/RF/Settings - "Faites attention lorsque vous remplacez les paramètres, en particulier lorsque la valeur par défaut est un tuple ou un dictionnaire non vide, tel que Middleware_Classes et Template_Context_Processeurs. Assurez-vous de conserver les composants requis par les fonctionnalités de Django que vous souhaitez utiliser. ". Cependant, voir ici pour une solution: Stackoverflow.com/questions/9899113/...



1
votes

Qu'est-ce qui fonctionne pour moi était d'ajouter: xxx

au paramètre.pypy pas sur URLs.py


0 commentaires

3
votes

Aucune des réponses données n'a été résolue mon problème, donc pour ces autres qui ont trébuché sur cet accès à l'objet de la requête dans un modèle de vue générique que vous pouvez faire quelque chose comme ceci dans votre URLS.PYRY:

from django.views.generic import ListView

class ReqListView(ListView):
    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        c = super(ReqListView, self).get_context_data(**kwargs)
        # add the request to the context
        c.update({ 'request': self.request })
        return c

url(r'^yourpage/$',
    ReqListView.as_view(
        # your options
    )
)

acclamations! p> p>


0 commentaires

3
votes

Essayez d'utiliser la méthode get_queryset.

def get_queryset(self):
    return Post.objects.filter(author=self.request.user)


2 commentaires

super! C'est très mauvais documenté à Django. J'ai besoin exactement de la demande Obj. dans la sous-classe ListView.


Link est mort, mais c'est ici sur web.archive.org: web.archive.org/web/20160923030156/http://www.gregaker.net/2 012 / ...