On Mon, Jul 13, 2009 at 5:36 PM, David <ww...@yahoo.com> wrote:

>
> Thanks Amit. Here is the problem that I meet.
>
> alerts = Alert.objects.filter((Q(dataset=dataset1)
>
> for eachalert in alerts:
>    e_metric1 = eachalert.criteria1_metric1
>
>
> Django complains that there is no such item "criteria1_metric1" in
> Alert class. This is correct as Alert class does not have such an
> item. The "criteria1_metric1" is a variable here that has a value. And
> this value is an item in the Alert class.
>

What do you mean "this value is an item in the Alert class"?  Items in the
Alert class are model instances which presumably have a set of different
field values.  So I can't figure out what you by this sentence.


> How to let Django know that the "criteria1_metric1" is a variable
> instead of a class item (table column)?
> Thanks again.
>

The code you originally posted, reformatted to not wrap somewhat randomly
and removing the long strings of dots and line number is:

alertcriteria1 = Alert_Criteria1.objects.all()
for eachcriterion in alertcriteria1:
    dataset1 = eachcriterion.dataset
    criteria1_metric1 = eachcriterion.criteria1_metric1
alerts = Alert.objects.filter(Q(dataset = dataset1))
for eachalert in alerts:
    e_metric1 = eachalert.criteria1_metric1

First you loop through all of the Alert_Criteria1 objects.  In that loop you
set a couple of variables, dataset1 and criteria1_metric1.  As written,
these are local variables in your function.  The loop seems pretty pointless
as at each iteration of the loop you simply overwrite the local variable
values from the last iteration.  So on exit from the loop these two
variables will have values from the last item in
Alert_Criteria1.objects.all().  The values from all of the other
Alert_Criteria1 objects have not been saved anywhere.

Then you loop through a different set of objects, Alert.  And you try to set
a local variable, e_metric1, to be the value of the 'criteria1_metric1'
attribute of the current loop iteration's Alert model instance.  But you say
that you know 'criteria1_metric!1' is not an attribute of an Alert, rather
you want what you set back up in the first loop.  If that was what you
really wanted, your line of code would be:

    e_metric1 = criteria1_metric1

But I don't think that can be what you really want because it would be
pretty pointless to set the value of one local variable to be equal to while
looping over a set of objects.  That line of code would have nothing to do
with the objects you are iterating over.

If you could take a step back and explain what it is at a high level that
you are trying to do, someone may be able to help.  As it is I suspect your
code is nowhere near doing what you are looking for, and solving the exact
attribute error or whatever it is you are seeing now is not really going to
get you any closer to whatever it is you are trying to achieve.

Karen

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to