2016-04-12 41 views
0

için sorgu kümesi verileri eklemek, ama bir şey yanlıştır:Django Ben <code>get_context</code> ile şablon için görünümde ben <code>get_queryset</code> değeri olsun böylece <code>media</code> değerlerini şablon eklemek ve sonra bunları eklemek istediğiniz bağlamda

class LaLista(ListView): 

    def get_queryset(self, **kwargs): 
     qs = super(LaLista, self).get_queryset() 
     media = qs.aggregate(Avg('A_U'), Max('A_U'), Min('A_U')) 
     return qs, media 

    def get_context_data(self, **kwargs): 
     context = super(LaLista, self).get_context_data(**kwargs) 
     context['media'] = media 
     return context 
şablonda

Ben verdik:

{{ media }} 

ve bu dönecektir:

NameError: global name 'media' is not defined

cevap

1

media değişkenini get_context_data işlevinde kullanıyorsunuz, ancak işlevde tanımlanan değişkeni kullanmıyorsunuz. Python değişkenleri işlev kapsamındadır, böylece ilk önce tanımlamaksızın bunu kullanamazsınız.

get_querysetListView şablonunda yineleme olacağı Sorgu Kümesi almak içindir, çünkü fonksiyonu get_queryset yılında media sorgulamak gerektiğini, bu nedenle sadece BİR sonuç dönmelidir. Eğer fazladan bağlam istiyorsanız, fonksiyonu get_context_data bunu yapmak: self.object_list ve fine.Thank sizi işe

def get_context_data(self, **kwargs): 
    context = super(LaLista, self).get_context_data(**kwargs) 
    # if you didn't define anything special, object_list is the default queryset name 
    qs = kwargs['object_list'] 
    media = qs.aggregate(Avg('A_U'), Max('A_U'), Min('A_U')) 
+0

Sadece değişti kwargs! – user2239318