You can use the raw() function to create a adhoc query to the database.
Check the documentation and write proper sql code. It will be much more
efficient.


On Fri, Jun 20, 2014 at 12:44 PM, G Z <[email protected]> wrote:

> There instead of looping through the queries i do it all in one loop but
> its still taking forever, how does django do the query, it seems like its
> doing a Cartesian product ? My server dies when ever I hit this page.
>
> query_results = Customer.objects.all()
>     customers = {}
>     data = {}
>     customer_names = {}
>     vm_group_id = {}
>     vm_groups = {}
>     vm_names = {}
>
>     for result in query_results:
>        #get data
>        customer_id = Customer.objects.values('customer_id')
>        customer_name = Customer.objects.values('customer_name')
>        vm_group = Vm_group.objects.filter(customer=customer_id)
>        vm_group_ids = Vm_group.objects.values('vm_group_id')
>        vm_name = Vm.objects.values('vm_name')
>        vms = Vm.objects.filter(vm_group_id=vm_group_ids)
>
>
>        #build dictonary
>
>        vm_group_id['vm_group_id'] = vm_group_ids
>        customer_names['customer_name'] = customer_name
>        vm_names['vm_name'] = vm_name
>        vm_groups['vm_group'] = vm_group
>        data['info'] = (vm_group_id, customer_names, vm_name, vm_group)
>
>        customers[customer_id] = data
>
>     context = Context({'customer': query_results, 'vm_group': vm_group,
> 'vms': vms, 'customers':customers,
>                                                 })
>
>     return render(request, 'portal.html', context)
>
>
>
> On Friday, June 20, 2014 9:09:55 AM UTC-6, G Z wrote:
>>
>> Sad part is I can do it in python well, I just can't seem to grasp the
>> way django works i keep reading the damn documentation but I cant see any
>> good examples relating to what I have to do.
>>
>> On Friday, June 20, 2014 5:10:10 AM UTC-6, Tom Evans wrote:
>>>
>>> On Fri, Jun 20, 2014 at 12:16 AM, G Z <[email protected]> wrote:
>>> > my django server dies whenever i login and access the following
>>> function:
>>> >
>>> > what is a better way to do what im doing. I need to loop through all
>>> of the
>>> > vm_groups by customer id, and then loop through all of the vms and
>>> associate
>>> > them with each other.
>>> > The code below is what i have but its not working. django just kills
>>> its
>>> > self.
>>> >
>>> > def portal(request):
>>> >
>>> >     query_results = Customer.objects.all()
>>> >
>>> >     for result in query_results:
>>> >        customer_id = Customer.objects.values('customer_id')
>>> >
>>> >        vm_group = Vm_group.objects.filter(customer=customer_id)
>>> >
>>> >        for result in vm_group:
>>> >           vm_group_ids = Vm_group.objects.values('vm_group_id')
>>> >
>>> >           for result in vm_group_ids:
>>> >              vms = Vm.objects.filter(vm_group_id=vm_group_ids)
>>> >
>>> >
>>> >     context = Context({'customer': query_results, 'vm_group':
>>> vm_group,
>>> > 'vms': vms,
>>> >                                                 })
>>> >
>>> >     return render(request, 'portal.html', context)
>>> >
>>>
>>> What is this code supposed to do?
>>>
>>> You generate a "vm_group" for each customer, but then discard all but
>>> the last one generated, which you put in your context.
>>>
>>> Similarly, you generate a "vms" object for each vm group id in each vm
>>> group in each customer, but then discard all but the last one.
>>>
>>> Running queries inside loops inside loops inside loops is an extremely
>>> inefficient way of querying the database, and this is ultimately why
>>> it kills itself - it takes too long.
>>>
>>> The purpose of the view is to efficiently generate data that you then
>>> output in your template, but your view generates data inefficiently
>>> that you discard. What do you want output in your template?
>>>
>>> Cheers
>>>
>>> Tom
>>>
>>> PS:
>>>
>>> I don't mean to discourage you, but looking back at your past posts,
>>> they all seem to be variants of this exact question for the past
>>> several months.
>>>
>>> It might be worth doing some more straightforward exercises in python
>>> so that you understand basic concepts like looping and variable
>>> scoping, and when you get help on the mailing list, make sure you
>>> understand why you are changing what you have been told to change -
>>> ask questions of the people helping you if you don't know - otherwise
>>> you are learning how to be a cargo cult programmer.
>>>
>>  --
> 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.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/f71cbe94-f7a0-4375-8d62-3468997a2aec%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/f71cbe94-f7a0-4375-8d62-3468997a2aec%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>



-- 
George R. C. Silva
SIGMA Consultoria
----------------------------
http://www.consultoriasigma.com.br/

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAGyPVTuYRo9a9S_74YJKV9J-JOZ-TyymA1i0Hqv_zKOXc1-WpQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to