2017-09-01 3 views
-1

J'ai un projet en django 1.8 et je veux extraire le champpour avoir une année et ensuite créer une plage en quelle année l'événement se produit . Passez ensuite tout à SelectDateWidget sous la forme:trop de valeurs pour décompresser (attendu 2) quand j'utilise filter()

date_start = forms.DateField(widget=SelectDateWidget(years=range(1980, 2018))) 

Mais je recived: too many values to unpack (expected 2)

Voici une partie problématique de mon code:

context['years'] = models.Booking.objects.filter('date_start') 

est ici tout le code de mon point de vue:

class BookingListView(ListView, FormView): 
    model = models.Booking 
    form_class = BookingForm 
    queryset = models.Booking.objects.order_by('-date_start') 
    paginate_by = 80 
    template_name = 'events/archive_list.html' 
    context_object_name = 'object_list' 
    date_field = 'date_start' 
    allow_future = True 

    def get_context_data(self, **kwargs): 
     context = super(BookingListView, self).get_context_data(**kwargs) 
     context['mode'] = 'archive' 
     context['form'] = BookingForm() 
     context['years'] = models.Booking.objects.filter('date_start') 
     print(context['years']) 
     return context 
+0

comprennent le retraçage d'erreur complète dans la question –

+0

À moins que vous postez le plein retraçage à votre erreur, personne ne sera en mesure de vous aider juste en regardant 2 lignes de code et une chaîne d'erreur possible sans rapport avec une ligne nombre/fonction appel/valeurs de paramètres etc – BoboDarph

+0

S'il vous plaît vérifier maintenant. – Kai

Répondre

1

Vous utilisez la chaîne "date_start", au lieu de la variable date_start. Changez votre code pour cela et cela devrait fonctionner.

context['years'] = models.Booking.objects.filter(date_start) 
+0

Vraiment, comment cela est-il supposé fonctionner avec '.filter'? –

+0

pour moi ne fonctionne pas – Kai

+0

Ensuite, postez plus de votre code, et retraçage complet. C'était une erreur évidente, facile à corriger, mais il pourrait y avoir plus dans votre code. –