That makes a lot of sense.  Thanks for the explanation.  I will use the 
view to convert it to an int.

Jack

On Tuesday, September 17, 2013 1:00:01 PM UTC-7, ke1g wrote:
>
> Yes, this is the expected behavior.  The GET parameter is a string, being 
> something that is just parsed out of the query parameter portion of the URL 
> (which is, itself, a string).  There is nothing to inform the code that 
> parses the query parameters which of the things that might look like 
> numbers should be converted to int, float, or left alone.  Since converting 
> to a numeric type and back is not a null operation ('001' -> 1 -> '1', 
> '1.00' -> 1.0 -> '1.0'), leaving it as the string it is already is the 
> correct choice.  Knowing how a parameter is to be interpreted is an 
> application specific task.
>
> Probably the correct approach for you is to have view code capture the 
> system argument and convert it to an int (perhaps there is a form field 
> instance handy which has already done that and put it in the form's 
> cleaned_data?), and pass that into the template context.  Then compare 
> item.id to that, rather than something you dug out of request.GET.
>
> Bill
>
>
> On Tue, Sep 17, 2013 at 2:50 PM, J Y <[email protected] <javascript:>>wrote:
>
>> I am building a search form that provides a drop down list, and then on 
>> the search results, I am redisplaying the search form, but with the search 
>> parameters already pre-selected, so this is what I attempted to do:
>>
>> <select name="system">
>>     {% for item in object_list %}
>>         <option value="{{ item.id }}" {% if item.id == 
>> request.GET.system %} selected="selected" {% endif %}>
>>             {{ item.name }}
>>         </option>
>>     {% endfor %}
>> </select>
>>
>> Unfortunately, this did not work.  When I did some testing, I realized 
>> that item.id is giving back an int, while request.GET.system is giving 
>> back a string.  If I used the view to change the GET value to an int in the 
>> context, then the comparison works.
>>
>> What I am wondering is, is this expected behavior?  Does the request 
>> object always return a string, and that I am better off writing my own 
>> custom tag to convert request objects into int for comparison?  What is the 
>> best practice to employ here?  I am fairly new to django and could use some 
>> pointers.
>>
>> Thanks,
>>
>> Jack
>>
>> -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/django-users.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
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