scoopseven schrieb:
On Nov 12, 8:55 pm, Steven D'Aprano <st...@remove-this-
cybersource.com.au> wrote:
On Thu, 12 Nov 2009 10:39:33 -0800, scoopseven wrote:
I need to create a dictionary of querysets.  I have code that looks
like:
query1 = Myobject.objects.filter(status=1)
query2 = Myobject.objects.filter(status=2)
query3 = Myobject.objects.filter(status=3)
d={}
d['a'] = query1
d['b'] = query2
d['c'] = query3
Is there a way to do this that I'm missing?
I don't understand your problem. Assuming Myobject is defined, and has
the appropriate attribute objects.filter, the above should work exactly
as you give it.

What is your actual problem? Are you asking for help in defining a
queryset?

--
Steven

I actually had a queryset that was dynamically generated, so I ended
up having to use the eval function, like this...

d = {}
for thing in things:
        query_name = 'thing_' + str(thing.id)
        query_string = 'Thing.objects.filter(type=' + str(thing.id) +
').order_by(\'-date\')[:3]'
        executable_string = query_name + ' = Thing.objects.filter
(type=' + str(thing.id) + ').order_by(\'-date\')[:3]'
        exec(executable_string)
        d[query_name] = eval(query_string)

And no, this is not based on user-generated input.

Why do you need this to use exec? And it seems that executable_string is superflous - or do you want the side-effect? But then, you have the results in d already.


 query = Thing.objects.filter(type="%i" % thing.id).order_by('-date')[:3]

 d[query_name] = query

As a rule of thumb: if you think you need exec, you don't.


Diez
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to