Hi Leo,

Most of what you describe looks familiar, but I'm not 100% sure that what
you say is what I'm trying to do.  One thing you said though stands out
which was new to me, which was the difference between ListViews and
DetailViews.  I'm not very experienced with those and thus don't understand
them fully yet.

Note that you define a get_queryset() method in AltwordlistView, but I
think it is not called in a DetailedView, only ListView uses it.




Let me try to walk you through visually what I'm trying to do with my messy
and confusing code.  :)

1.)
My ERD diagram.
http://s1289.photobucket.com/user/allergic2facebook/media/Django/Navi_08_zps2a9360d1.png.html

2.)
My Index page list the words that I want in *Filter 2* (from Word table).
 You can basically ignore everything else my main focus is on Filter 2.  I
then click on the word *"( id: 1 ) - Page"* which then sends me to the
AltwordlistView.
http://s1289.photobucket.com/user/allergic2facebook/media/Django/Indexhtml_zps77b085a3.png.html

3.)
The next page I see is *altword_list.html*.  Here I am trying to integrate
the new Filter 8 code into my project but it's not working.  The template
file altword_list.html can't receive any Filter 8 variable from my
AltwordlistView.
http://s1289.photobucket.com/user/allergic2facebook/media/Django/Altword_listhtml_zps8e8ffe4e.png.html

Only my Filter 5 code is closest to what I am trying to achieve.  It just
won't order the votes. :(
Filter 5 code uses get_queryset() so I'm reluctant to throw away that
method from AltwordlistView(generic.DetailView).

On this screenshot only *Filter 8* and *Filter 5* is of interest.  You can
basically ignore the rest which are old filter experiments.



4.)

So I'd fix the whole thing this way:
* get rid of get_queryset()
* get rid of the altword_list() function view
* put something like context['poll_list'] =
Altword.objects.filter(word__pk=word_id).order_by('-votes') in
get_context_data()


I kept the get_queryset() for now because of the above explanation from
Step 3.  Until I see a better replacement code.
But I tried to do what you say by integrating the new Filter 8 code into
get_context_data().

*Views*
http://dpaste.com/1418808/

*altword_list.html*
http://dpaste.com/1418809/


What I get is the below exception, so it seems I'm having issues with
connecting the PK in my View code.  How do I deal with this kind of problem?

Exception Value:  global name 'word_id' is not defined
Exception Location:  Navi/Django/navi/navi_polls/views.py in
get_context_data, line 118










On Wed, Oct 16, 2013 at 12:29 PM, Leonardo Giordani <
giordani.leona...@gmail.com> wrote:

> Well, I tried to understand the code. Correct me if I did not understand
> it:
>
> * you are calling AltwordlistView from r'^altword_list/(?P<pk>\d+)/$
> * being a DetailedView on Altword, AltwordlistView extracts the Altword
> with the given pk with a query like Altword.objects.get(pk=pk)
> * you set the context you send to the template, in the get_context_data
>
> There, in get_context_data() you have to initialize all the keywords you
> are going to use in the template. In this case poll_list.
>
> Note that you define a get_queryset() method in AltwordlistView, but I
> think it is not called in a DetailedView, only ListView uses it.
>
> So I'd fix the whole thing this way:
>
> * get rid of get_queryset()
> * get rid of the altword_list() function view
> * put something like context['poll_list'] =
> Altword.objects.filter(word__pk=word_id).order_by('-votes') in
> get_context_data()
>
> If you are trying to show a list of objects, however, I suggest you to try
> and use a ListView, where you can define your queryset, as you tried to do
> with the get_queryset() method.
>
> Try and let me know if something starts to work. Feel free to ask further
> if the matter is not clear.
>
> Cheers,
>
> Leo
>
>
> Leonardo Giordani
> Author of The Digital Cat <http://lgiordani.github.com>
> My profile on About.me <http://about.me/leonardo.giordani> - My GitHub
> page <https://github.com/lgiordani> - My Coderwall 
> profile<https://coderwall.com/lgiordani>
>
>
> 2013/10/15 Pepsodent Cola <pepsodentc...@gmail.com>
>
>>
>> Hi Leo,
>>
>> get_query() function in class AltwordlistView which I refer to as *
>> Filter-5* didn't give me the ordered list result that I wanted.  So
>> somebody on #django IRC helped me to fix that problem by giving me *
>> altword_list()* function which I refer to as *Filter-8*.
>> You can basically ignore all the other Filter codes but I left it there
>> in case it might help you see what I'm trying to do.
>>
>> My main focus right now is to connect the Filter-8 code to my template *
>> altword_list.html* but I don't know how to do it.
>>
>> *urls.py*
>> http://dpaste.com/1417526/
>>
>> *views*
>> http://dpaste.com/1417533/
>>
>> *altword_list.html*
>> http://dpaste.com/1417534/
>>
>>
>>
>>
>>
>> * urls.py
>>
>> from django.conf.urls import patterns, urlfrom navi_polls import 
>> views#_______________________________________________________________________________
>> urlpatterns = patterns('',
>>     # ex: /polls/
>>     url(r'^$', views.IndexView.as_view(), name='index'),
>>     # ex: /polls/5/
>>     url(r'^specifics/(?P<pk>\d+)/$', views.DetailView.as_view(), 
>> name='detail'),
>>     # ex: /polls/5/results/
>>     url(r'^(?P<pk>\d+)/results/$', views.ResultsView.as_view(), 
>> name='results'),
>>     # ex: /polls/5/vote/
>>     url(r'^(?P<word_id>\d+)/vote/$', views.vote, name='vote'),
>>
>>     # ex: /polls/5/
>>     url(r'^altword_list/(?P<pk>\d+)/$', views.AltwordlistView.as_view(), 
>> name='altword_list'),)
>>
>>
>>
>>
>> * views.py
>>
>> from django.http import HttpResponseRedirectfrom django.shortcuts import 
>> render, get_object_or_404from django.core.urlresolvers import reversefrom 
>> django.views import genericfrom django.utils import timezone
>> from navi_polls.models import Word, 
>> Altword#_______________________________________________________________________________
>> class IndexView(generic.ListView):
>>     template_name = 'navi_polls/index.html'
>>     context_object_name = 'latest_poll_list'
>>
>>     def get_queryset(self):# Filter 1
>>         """        Return the last five published polls        (not 
>> including those set to be published in the future).        """
>>         return Word.objects.filter(pub_date__lte=timezone.now()
>>                 ).order_by('-pub_date')[:5]
>>
>>         #"""
>>         #Return the last five published polls
>>         #(including those set to be published in the future).
>>         #"""
>>         #return Word.objects.order_by('-pub_date')[:5]
>>
>>
>>     def get_context_data(self, **kwargs):
>>         context = super(IndexView, self).get_context_data(**kwargs)# Filter 2
>>         filter_2 = Word.objects.filter(direct_transl_word='')# Filter 4
>>         filter_4 = Altword.objects.filter(rosword__direct_transl_word='')
>>
>>         context.update({
>>             "filter_2": filter_2,
>>             "filter_4": filter_4
>>         })
>>         return 
>> context#_______________________________________________________________________________
>>
>>
>> #_______________________________________________________________________________
>> class AltwordlistView(generic.DetailView):
>>     #model = Word
>>     model = Altword
>>     template_name = 'navi_polls/altword_list.html'
>>     context_object_name = 'poll'
>>
>>     def get_queryset(self):
>>         #"""
>>
>>         #Excludes any polls that aren't published yet.
>>         #"""
>>         #return Word.objects.filter(pub_date__lte=timezone.now())
>> # Filter 5
>>         #return Word.objects.filter(direct_transl_word='')
>>
>>         #return Word.objects.filter(direct_transl_word='').order_by('-votes')
>>
>>         return 
>> Word.objects.filter(direct_transl_word='').order_by('-altword_rosword__votes')
>>
>>         #return Altword.objects.filter(rosword__direct_transl_word='')
>>         #return Altword.objects.filter(word__direct_transl_word='')
>>
>>
>>
>>     def get_context_data(self, **kwargs):
>>         context = super(AltwordlistView, self).get_context_data(**kwargs)# 
>> Filter 4b
>>         filter_4b = 
>> Altword.objects.filter(rosword__direct_transl_word='').order_by('-votes')# 
>> Filter 7
>>         filter_7 = Altword.objects.vote_order()# Filter 8b#        filter_8b 
>> = Altword.objects.filter(word__pk=word_id).order_by('-votes')
>>
>>
>>         context.update({
>>             "filter_4b": filter_4b,
>>             "filter_7": filter_7
>>  #           "filter_8b": filter_8b
>>         })
>>         return context
>>
>> # Filter 8
>>     def altword_list(self, request, word_id):
>>         #object_list = 
>> AltWord.objects.filter(word__pk=word_id).order_by('-votes')
>>         object_list = 
>> Altword.objects.filter(word__pk=word_id).order_by('-votes')
>>
>>         return render(request, 'navi_polls/altword_list.html', {
>>             'poll_list': object_list,
>>         })
>>
>>
>>
>> * altword_list.html
>>
>> <h1>{{ poll.rosword }} - id:{{ poll.id }}</h1>
>>
>>
>>
>> <!-- Filter 8 -->{% if poll_list %}
>>     <ul>
>>     {% for row in poll_list %}
>>         <li>( id:{{ row.id }} ) - {{ row.rosword }}</li>
>>     {% endfor %}
>>     </ul>{% else %}
>>     <p>No list is available.</p>{% endif %}
>>
>> <h3>Filter 8</h3><!-- Filter 8 -->
>> <table border="1"><tr><th>Altword_id</th><th>Rosword</th><th>Alt ros 
>> word</th><th>Alt transl word</th><th>Articulate</th><th>Votes</th></tr>
>>
>> <!-- poll.altword_set.all.order_by('-votes') --><!-- for choice in 
>> poll.altword_set.all --><!-- for choice in poll %} -->
>> <!-- for choice in poll_list --><!-- for choice in 
>> poll_list.altword_rosword.all -->{% for choice in poll_list %}
>> <tr>
>>     <td>{{ choice.id }}</td>
>>     <td>{{ choice.rosword }}</td>
>>     <td>{{ choice.alt_ros_word }}</td>
>>     <td>{{ choice.alt_transl_word }}</td>
>>     <td>{{ choice.articulate }}</td>
>>     <td>{{ choice.votes }}</td></tr>{% endfor %}</table>
>>
>>
>> <h3>Filter 5</h3><!-- Filter 5 -->
>> <table border="1"><tr><th>Altword_id</th><th>Rosword</th><th>Alt ros 
>> word</th><th>Alt transl word</th><th>Articulate</th><th>Votes</th></tr>
>>
>> <!-- poll.altword_set.all.order_by('-votes') --><!-- for choice in 
>> poll.altword_set.all --><!-- for choice in poll %} -->
>> {% for choice in poll.altword_rosword.all %}<tr>
>>     <td>{{ choice.id }}</td>
>>     <td>{{ choice.rosword }}</td>
>>     <td>{{ choice.alt_ros_word }}</td>
>>     <td>{{ choice.alt_transl_word }}</td>
>>     <td>{{ choice.articulate }}</td>
>>     <td>{{ choice.votes }}</td></tr>{% endfor %}</table>
>>
>>
>> <h3>Filter 7</h3><!-- Filter 7 --><ul>{% for choice in filter_7 %}<li>{{ 
>> choice }}  = {{ choice.votes }} votes</li>{% endfor %}</ul>
>> <ul>{% for choice in filter_7 %}<li>{{ choice.rosword }} - {{ 
>> choice.alt_ros_word }}  = {{ choice.votes }} votes</li>{% endfor %}</ul>
>>
>> <h3>Filter 4b</h3><!-- Filter 4b --><ul>{% for choice in filter_4b %}
>>     <li>{{ choice.rosword }} - {{ choice.alt_ros_word }} - {{ 
>> choice.alt_transl_word }} - {{ choice.articulate }} = {{ choice.votes }} 
>> votes</li>{% endfor %}</ul>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Tue, Oct 15, 2013 at 8:30 AM, Leonardo Giordani <
>> giordani.leona...@gmail.com> wrote:
>>
>>> Can you check the code you posted? The get_query() function is empty so
>>> this code, as posted, can not run.
>>> Please post even the urls you are using to call the view.
>>>
>>> Cheers,
>>>
>>> Leo
>>>
>>> Leonardo Giordani
>>> Author of The Digital Cat <http://lgiordani.github.com>
>>> My profile on About.me <http://about.me/leonardo.giordani> - My GitHub
>>> page <https://github.com/lgiordani> - My Coderwall 
>>> profile<https://coderwall.com/lgiordani>
>>>
>>>
>>> 2013/10/15 Pepsodent Cola <pepsodentc...@gmail.com>
>>>
>>>>  Hi,
>>>>
>>>> I got some help by somebody on #django IRC.  They gave me this code
>>>> snippet to fix my problem.  But I'm having problems incorporating that code
>>>> into my Class file because Template file says "No list is available" when I
>>>> try to access the list variable.  What am I doing wrong?
>>>>
>>>> # Filter 8
>>>>     def altword_list(self, request, word_id):
>>>>         #object_list =
>>>> AltWord.objects.filter(word__pk=word_id).order_by('-votes')
>>>>         object_list =
>>>> Altword.objects.filter(word__pk=word_id).order_by('-votes')
>>>>
>>>>         return render(request, 'navi_polls/altword_list.html', {
>>>>             'poll_list': object_list,
>>>>         })
>>>>
>>>>
>>>>
>>>>  *Views*
>>>>
>>>> #_______________________________________________________________________________
>>>>
>>>> class AltwordlistView(generic.DetailView):
>>>>     #model = Word
>>>>     model = Altword
>>>>     template_name = 'navi_polls/altword_list.html'
>>>>     context_object_name = 'poll'
>>>>
>>>>     def get_queryset(self):
>>>> # Filter 5
>>>>         #return Word.objects.filter(direct_transl_word='')
>>>>
>>>>
>>>>     def get_context_data(self, **kwargs):
>>>>         context = super(AltwordlistView,
>>>> self).get_context_data(**kwargs)
>>>> # Filter 4b
>>>>         filter_4b =
>>>> Altword.objects.filter(rosword__direct_transl_word='').order_by('-votes')
>>>> # Filter 7
>>>>         filter_7 = Altword.objects.vote_order()
>>>> # Filter 8b
>>>> #        filter_8b =
>>>> Altword.objects.filter(word__pk=word_id).order_by('-votes')
>>>>
>>>>
>>>>         context.update({
>>>>             "filter_4b": filter_4b,
>>>>             "filter_7": filter_7
>>>>  #           "filter_8b": filter_8b
>>>>         })
>>>>         return context
>>>>
>>>>
>>>> # Filter 8
>>>>     def altword_list(self, request, word_id):
>>>>         #object_list =
>>>> AltWord.objects.filter(word__pk=word_id).order_by('-votes')
>>>>         object_list =
>>>> Altword.objects.filter(word__pk=word_id).order_by('-votes')
>>>>
>>>>         return render(request, 'navi_polls/altword_list.html', {
>>>>             'poll_list': object_list,
>>>>         })
>>>>
>>>> #_______________________________________________________________________________
>>>> *
>>>> *
>>>>
>>>>
>>>> *Template*
>>>>
>>>> #_______________________________________________________________________________
>>>>
>>>> <!-- Filter 8 -->
>>>> {% if poll_list %}
>>>>     <ul>
>>>>     {% for row in poll_list %}
>>>>         <li>( id:{{ row.id }} ) - {{ row.rosword }}</li>
>>>>     {% endfor %}
>>>>     </ul>
>>>> {% else %}
>>>>     <p>No list is available.</p>
>>>> {% endif %}
>>>>
>>>>
>>>> <!-- poll.altword_set.all.order_by('-votes') -->
>>>> <!-- for choice in poll.altword_set.all -->
>>>> <!-- for choice in poll %} -->
>>>>
>>>> <!-- for choice in poll_list -->
>>>> <!-- for choice in poll_list.altword_rosword.all -->
>>>> {% for choice in poll_list %}
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Django users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to django-users+unsubscr...@googlegroups.com.
>>>>
>>>> To post to this group, send email to django-users@googlegroups.com.
>>>> Visit this group at http://groups.google.com/group/django-users.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/django-users/d8f21d91-e06d-428d-923d-08ace9d8df8a%40googlegroups.com
>>>> .
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>
>>>  --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "Django users" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/django-users/32WV-oD5rSc/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> django-users+unsubscr...@googlegroups.com.
>>>
>>> To post to this group, send email to django-users@googlegroups.com.
>>> Visit this group at http://groups.google.com/group/django-users.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/django-users/CAEhE%2BOmK17x_ZVqcFxpOMBGqQ7qTzjhFPD233r94qyQU9i9kbg%40mail.gmail.com
>>> .
>>>
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to django-users+unsubscr...@googlegroups.com.
>> To post to this group, send email to django-users@googlegroups.com.
>> Visit this group at http://groups.google.com/group/django-users.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/CAOWMwCzrZZhzuHgFnY8NWsozZWv3UxarhTmAVE0xqvj6mVTuyQ%40mail.gmail.com
>> .
>>
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>  --
> You received this message because you are subscribed to a topic in the
> Google Groups "Django users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/django-users/32WV-oD5rSc/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/CAEhE%2BOkxj5tFZJErfy0SiQax4ttgA5mVnounnGgxGHyX9vh4_Q%40mail.gmail.com
> .
>
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAOWMwCygjmwtm%3DL6j7pGG5Bw_Dbd%2BUd4ssyTMA9jEygkSf6i5w%40mail.gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to