How to handle values_list?

187 views
Skip to first unread message

Andrew Michael

unread,
Oct 17, 2013, 6:30:09 PM10/17/13
to django...@googlegroups.com
Hi, 

I am new to Django and need some help. My issue is on my web page the data is showing up like this: [u'Green'] and I want it to only show Green - without the unicode wrapping. Can you please explain why this is happening and how do I fix it? 

Here is my code. 

models.py:

Class Name(models.Model):

name = models.CharField(_('name'), max_length=100)

number = models.ForeignKey(Number)

views.py:

def enter_name(request):

    my_number = request.user.number

    name = Name.objects.filter(pk=my_number).values_list('city', flat=True)

template.html:

{{ name|safe }}

 

Prints on the web page:

[u’Green’]

Bill Freeman

unread,
Oct 17, 2013, 8:19:57 PM10/17/13
to django-users
Try:

    {{ name.0.name }}


--
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...@googlegroups.com.
To post to this group, send email to django...@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/8287f841-2442-4f57-b46a-ca071fe839a8%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Andrew Michael

unread,
Oct 17, 2013, 8:31:14 PM10/17/13
to django...@googlegroups.com
Unfortunately, that did not work. When I put that in the template I get nothing for name, not even [u'Green']. 

Any other thoughts?

Daniel Roseman

unread,
Oct 17, 2013, 8:33:19 PM10/17/13
to django...@googlegroups.com
This nothing to do with Unicode. `name` is a *list*. So you have to iterate over it:

    {% for name in names %}
        {{ name }}
    {% endfor %}
--
DR.

Charly Román

unread,
Oct 17, 2013, 8:39:46 PM10/17/13
to django...@googlegroups.com
Have you tried used get instead filter?

2013/10/17 Daniel Roseman <dan...@roseman.org.uk>:
> --
> 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...@googlegroups.com.
> To post to this group, send email to django...@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/f1d664fc-4a67-4d1f-8df5-76fda1bbef20%40googlegroups.com.

Leonardo Giordani

unread,
Oct 18, 2013, 6:39:22 AM10/18/13
to django...@googlegroups.com
Andrew, I think that the view is missing something:


def enter_name(request):

    my_number = request.user.number

    name = Name.objects.filter(pk=my_number).values_list('city', flat=True)

    data = {...}

    return render_to_response('template.html', data, context_instance=RequestContext(request))


where data is a dictionary with the values you want to be available in your template. So, for the template you posted, you could write


    data = {'name':name[0]}


Here, you need to decide what you need to pass: why do you use filter() instead of get()? Do you need just one value or multiple?

If you need to pass a list to the template just fill the dictionary accordingly, but follow Daniel's advice when rendering the list in the template.


Regards,


Leo



Leonardo Giordani
Author of The Digital Cat
My profile on About.me - My GitHub page - My Coderwall profile


2013/10/17 Charly Román <chack...@gmail.com>

Andrew Michael

unread,
Oct 18, 2013, 6:09:11 PM10/18/13
to django...@googlegroups.com
Thanks to Leonardo, Daniel and Charly this issue is resolved! Each of your comments helped me.

I changed my views.py file filter statement:

FROM: name = Name.objects.filter(pk=my_number).values_list('city', flat=True)

TO: name = Name.objects.get(pk=number).name

And in my template I have the same code:

{{ name|safe }}

And now Green shows on my web page instead of [u'Green']!
            


--
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/A3kEL3CDydM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users...@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
Reply all
Reply to author
Forward
0 new messages