2017-09-27 14 views
0

Comment faites-vous des vues génériques flexibles? Pour l'instant, j'ai deux modèles un pour les pommes et un pour les poires, et un seul modèle que je veux utiliser.Django comment faire des vues génériques flexibles

from django.views import generic 

class AppleIndexView(generic.ListView): 
    template_name = 'fruit/index.html' 
    context_object_name = 'apple_list' 

    def get_queryset(self): 
    return Apple.objects.values() 

class PearIndexView(generic.ListView): 
    template_name = 'fruit/index.html' 
    context_object_name = 'pear_list' 

    def get_queryset(self): 
    return Pear.objects.values() 

Existe-t-il un moyen d'être plus DRY? Il devrait y avoir un meilleur moyen.

Merci pour votre temps

EDIT DEMANDE SUPPLEMENTAIRE

Quelqu'un peut-il écrire cet exemple comme une vue unifiée, pourrait-il est non liée à un modèle. Donc je peux le voir comme il se doit.

Répondre

0

En fait, il vous suffit de fournir le modèle ou queryset, si vous suivez les principes que vous ne aurez pas besoin de fournir template_name ou context_object_name, dans le modèle de liste, vous pouvez accéder à context_object nom:

modelname_list 

ou juste

object_list 

si vous ne fournissez pas. Créer des modèles dans votre

app_dir/templates/app_dir/<model_name>_list.html 

et vous aurez pas besoin d'autre chose.

+0

Aurais-je besoin de deux modèles un Apple et un poire? Désolé je pense que je me méprends. Comment voulez-vous unifier les deux index ou aurai-je besoin de deux, juste plus simplifié? – TheSadPrinter