Re: dynamic choices for views/newforms

2008-06-29 Thread John Aherne

Daniel Roseman wrote:
> On Jun 29, 2:24 pm, John Aherne <[EMAIL PROTECTED]> wrote:
>   
>> OK. I did some more experimenting with ModelChoiceField and my table.
>>
>> Surprise. It worked when I thought it would not. Why did it work. By
>> luck in my model I had the __unicode__ function return the right value.
>> So now I could see better what was happening.
>>
>> I also printed out the post values in the 'runserver' so I could see
>> better there what was being selected. There I was initially confused
>> because the cleaned_data was the return value from __unicode__ and not
>> what I wanted.
>>
>> But if I looked at the POST data direct I had the correct ID I wanted.
>>
>> The I saw what was happening. The post was rcmcli01:3, so the table was
>> being called with the code and giving me the name. But what I really
>> want at this point is the code so I can use it to look up another table
>> for a list of jobs. For the moment I can take that directly from the
>> POST data but I should really be getting it from cleaned_data. Not sure
>> how I can do that at the moment.
>>
>> Thanks
>>
>> John Aherne
>> 
>
>
> I think you're being confused by the display of what's being returned.
>
> In fact the value in cleaned_data should be the actual *model
> instance*. Since you have __unicode__ defined on that model, when you
> do
>   
>>>> value = myform.cleaned_data['mychoicefield']
>>>> print value
>>>> 
> you will see the value of the unicode method you defined. But the
> underlying value is the actual element - you can do
>   
>>>> print value.id
>>>> 
> to get the id, and so on.
>
> By the way, I haven't addressed the second part of your OP, which was
> how to dynamically filter the values in the choicefield according to
> session data. Here's a good post that explains that:
> http://oebfare.com/blog/2008/feb/23/changing-modelchoicefield-queryset/
> --
> DR.
> >
>   
Thanks for the new info. I'll take a closer look.

Of course some of these things are documented, but you only see them 
when you have found out what is happening.

Thanks

John Aherne


--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



Re: dynamic choices for views/newforms

2008-06-29 Thread John Aherne

John Aherne wrote:
> Daniel Roseman wrote:
>   
>> On Jun 29, 11:34 am, John Aherne <[EMAIL PROTECTED]> wrote:
>>   
>> 
>>> I've been looking at django for a while. Been through the tutorial a few
>>> times and read 2 books several times and am still trying to find out how
>>> some things work.
>>>
>>> Instead of an empty form on first loading, I would like to be able to
>>> fill out some selection lists with data pulled from a database table.
>>>
>>> There are 2 things I would like to achieve:--
>>>
>>> First, I have a model with 30 fields but I want to extract 2 columns for
>>> use with a selection list. I want to get all rows in the table but only
>>> 2 columns. I have looked at using .values() but that returns a different
>>> format than a queryset.
>>>
>>> So I then found Managers. But before I start going through that I
>>> thought I would check and see if I have gone blind and missed some
>>> obvious way of getting my select list filled based on my table selection.
>>>
>>> Second thing is I want to select certain columns from a table but filter
>>> the selection based on input from the session data. At the moment, I'm
>>> not using session data, I just want to hardcode the options so I can
>>> concentrate on how I get my selection list filled. Once again my model
>>> has 10 fields, but I only want to get 2 of those to use in my selection
>>> list.
>>>
>>> I thought about filling out a dictionary and passing that in as per the
>>> samples in forms.py. But I then read that I should not be doing this.
>>> Choices in forms is for mainly static selections. So I then start
>>> looking for a way to get my data set up for a selection list. But as I
>>> say, I've looked at .objects.values() and then started to look at managers.
>>>
>>> Also I have googled all over for some reference to this problem I have
>>> and not found any link to my problem. I have some found some links that
>>> relate to some edge cases, but nothing simple. So I think I must be
>>> being a bit stupid or blind, since noone else is having this problem.
>>>
>>> I would be very pleased if someone could point me in the way to go on this.
>>>
>>> John Aherne
>>> 
>>>   
>> What you want is a ModelChoiceField. For example:
>>
>> from django import newforms as forms
>> class MyForm(forms.Form):
>> mychoicefield =
>> forms.ModelChoiceField(queryset=MyModel.objects.all())
>>
>> or you could put your filter as the queryset -
>> MyModel.objects.filter(field=criteria)
>>
>> --
>> DR.
>> 
>>   
>> 
> Thanks for the reply.
>
> Yes I did look at this. But this pulls in all the fields from the model. 
> I only want to pull in 2 columns from the table.
>
> So I looked at .objects.values() and then managers. But before I take 
> that route I wanted to check I was going in the right direction.
>
> You seem to imply that I need to set up a model with just the fields I 
> need. Where I have found samples to look at that is the option chosen, 
> which makes it a lot simpler.
>
> Am I missing something.
>
> John Aherne
>
>
>
> >
>   
OK. I did some more experimenting with ModelChoiceField and my table.

Surprise. It worked when I thought it would not. Why did it work. By 
luck in my model I had the __unicode__ function return the right value. 
So now I could see better what was happening.

I also printed out the post values in the 'runserver' so I could see 
better there what was being selected. There I was initially confused 
because the cleaned_data was the return value from __unicode__ and not 
what I wanted.

But if I looked at the POST data direct I had the correct ID I wanted.

The I saw what was happening. The post was rcmcli01:3, so the table was 
being called with the code and giving me the name. But what I really 
want at this point is the code so I can use it to look up another table 
for a list of jobs. For the moment I can take that directly from the 
POST data but I should really be getting it from cleaned_data. Not sure 
how I can do that at the moment.

Thanks

John Aherne


--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



Re: dynamic choices for views/newforms

2008-06-29 Thread John Aherne

Daniel Roseman wrote:
> On Jun 29, 11:34 am, John Aherne <[EMAIL PROTECTED]> wrote:
>   
>> I've been looking at django for a while. Been through the tutorial a few
>> times and read 2 books several times and am still trying to find out how
>> some things work.
>>
>> Instead of an empty form on first loading, I would like to be able to
>> fill out some selection lists with data pulled from a database table.
>>
>> There are 2 things I would like to achieve:--
>>
>> First, I have a model with 30 fields but I want to extract 2 columns for
>> use with a selection list. I want to get all rows in the table but only
>> 2 columns. I have looked at using .values() but that returns a different
>> format than a queryset.
>>
>> So I then found Managers. But before I start going through that I
>> thought I would check and see if I have gone blind and missed some
>> obvious way of getting my select list filled based on my table selection.
>>
>> Second thing is I want to select certain columns from a table but filter
>> the selection based on input from the session data. At the moment, I'm
>> not using session data, I just want to hardcode the options so I can
>> concentrate on how I get my selection list filled. Once again my model
>> has 10 fields, but I only want to get 2 of those to use in my selection
>> list.
>>
>> I thought about filling out a dictionary and passing that in as per the
>> samples in forms.py. But I then read that I should not be doing this.
>> Choices in forms is for mainly static selections. So I then start
>> looking for a way to get my data set up for a selection list. But as I
>> say, I've looked at .objects.values() and then started to look at managers.
>>
>> Also I have googled all over for some reference to this problem I have
>> and not found any link to my problem. I have some found some links that
>> relate to some edge cases, but nothing simple. So I think I must be
>> being a bit stupid or blind, since noone else is having this problem.
>>
>> I would be very pleased if someone could point me in the way to go on this.
>>
>> John Aherne
>> 
>
>
> What you want is a ModelChoiceField. For example:
>
> from django import newforms as forms
> class MyForm(forms.Form):
> mychoicefield =
> forms.ModelChoiceField(queryset=MyModel.objects.all())
>
> or you could put your filter as the queryset -
> MyModel.objects.filter(field=criteria)
>
> --
> DR.
> >
>   
Thanks for the reply.

Yes I did look at this. But this pulls in all the fields from the model. 
I only want to pull in 2 columns from the table.

So I looked at .objects.values() and then managers. But before I take 
that route I wanted to check I was going in the right direction.

You seem to imply that I need to set up a model with just the fields I 
need. Where I have found samples to look at that is the option chosen, 
which makes it a lot simpler.

Am I missing something.

John Aherne



--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



dynamic choices for views/newforms

2008-06-29 Thread John Aherne

I've been looking at django for a while. Been through the tutorial a few 
times and read 2 books several times and am still trying to find out how 
some things work.

Instead of an empty form on first loading, I would like to be able to 
fill out some selection lists with data pulled from a database table.

There are 2 things I would like to achieve:--

First, I have a model with 30 fields but I want to extract 2 columns for 
use with a selection list. I want to get all rows in the table but only 
2 columns. I have looked at using .values() but that returns a different 
format than a queryset.

So I then found Managers. But before I start going through that I 
thought I would check and see if I have gone blind and missed some 
obvious way of getting my select list filled based on my table selection.

Second thing is I want to select certain columns from a table but filter 
the selection based on input from the session data. At the moment, I'm 
not using session data, I just want to hardcode the options so I can 
concentrate on how I get my selection list filled. Once again my model 
has 10 fields, but I only want to get 2 of those to use in my selection 
list.

I thought about filling out a dictionary and passing that in as per the 
samples in forms.py. But I then read that I should not be doing this. 
Choices in forms is for mainly static selections. So I then start 
looking for a way to get my data set up for a selection list. But as I 
say, I've looked at .objects.values() and then started to look at managers.

Also I have googled all over for some reference to this problem I have 
and not found any link to my problem. I have some found some links that 
relate to some edge cases, but nothing simple. So I think I must be 
being a bit stupid or blind, since noone else is having this problem.

I would be very pleased if someone could point me in the way to go on this.


John Aherne


--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---