Hi
Yeah I see.
I tried it out just after writing, with little success, but without the 
.values() I do still have the {{ data.field_name }} available which Is 
probably more usefull than actually iterating over a dataset regardless of 
content.
Still the relationsships are only available as forwards and backwards 
relations on instances, right? Which, if I understand you correctly I only 
get when omitting the .get() method.
I probably should have started out with a Python tutorial before jumping in 
to django :) Well, no pain no gain I guess.
thanks by the way.

Den onsdag den 18. september 2013 20.14.47 UTC+2 skrev Daniel Roseman:
>
> Well, not quite. That will work if you just omit .get(), because then 
> you'll have a ValuesQuerySet - basically, a list of dicts. However, if you 
> omit .values() as well you'll have a plain old QuerySet - ie a list of 
> model instances - and those instances aren't dicts and don't have an 
> .items() method. There's not really a good way of iterating over all the 
> fields in an instance with their names (you can muck about with the stuff 
> in _meta, but I wouldn't recommend it).
>
> As I say though, in practice that's rarely a problem as you usually want 
> to reference individual fields by name, rather than iterating over them.
> --
> DR.
>
>
> On Wednesday, 18 September 2013 16:39:34 UTC+1, Johan Bergkvist wrote:
>>
>> Hi, thanks - that provides some perspective.
>>
>> So if I omitted the .get() and .values() i will have to loop over the 
>> queryset and then each dict, doing something like:
>>
>> {% for q in info %}
>>           {% for k, v in q.items %}
>>                    {{ k }} {{ v}}
>>           {% empty %}
>>                    no data
>>           {% endfor %}
>> {%endfor%}
>> ?
>>
>>
>>
>>
>> Den onsdag den 18. september 2013 00.02.21 UTC+2 skrev Daniel Roseman:
>>>
>>> Without the get(), you get a queryset, which is an iterable of all 
>>> elements that match the query - in effect, a list of dicts. Even though 
>>> only one record matches, you still get a queryset containing a single dict. 
>>> So in order to use that in your template, you'd have to add an outer loop 
>>> iterating through each item in the queryset, while the inner loop iterates 
>>> over the elements in each dict.
>>>
>>> Reverse relations work with a model instance. But you don't have one of 
>>> those - you've got a dict, because you used .values(). If you dropped that 
>>> call, you'd have an instance which you could use the backwards relation on, 
>>> but you wouldn't be able to iterate over the fields with .items(). Note 
>>> that most of the time you don't need to do that, so mostly you would use 
>>> the instance rather than calling .values().
>>>
>>> -- 
>>> DR.
>>>
>>>

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to