Hi Bill,

thank you for pointing me to the stringformat template option, I was
comparing Long with String.

Using now

try:
        berufe_id = int(berufe_id.strip())
    except:
        pass

What helped me a lot.

On Mar 11, 5:18 pm, Bill Freeman <ke1g...@gmail.com> wrote:
> It's time to go back to figuring out just what these things are.
> Put back your code that shows you the variable values, except
> instead of
>
>   {{ item.id }}
>
> and
>
>    {{ berufe_id }}
>
> use
>
>    --{{ item.id|stringformat:"%r" }}--
>
> and
>
>    --{{ berufe_id|stringformat:"%r%" }}--
>
> The %r version will include quotes if it's a string, and will show
> any whitespace.  The dashes are just to be sure we know where
> the object representation begins and ends.
>
> May we see the corresponding url pattern?
>
> I just want to be clear, however, that the best place to fix this is
> in a view function.  Even if it is mostly a wrapper for a generic view
> function (capture all the arguments and then pass them on, after
> fixing up the berufe_id argument, and return what the generic view
> returns.
>
> This would also give a place to put a pdb.set_trace() so that you can
> really see what's going on without having to invent code to give you
> hints.
>
> In case you're not very pythonic, here's what fix-up code in such a
> view function would look like:
>
>     try:
>         berufe_id = int(berufe_id.strip())
>     except:
>         pass
>
> Where the "pass" is you could instead return some error, or set
> berufe_id to the integer 1.
>
> Actually, while testing (DEBUG=True in settings.py), leave out the
> try, except, pass and just put in the berufe_id= line.  Then if it
> can't convert it to an integer you will get a 500 with a nice debugging
> stacktrace that let's you look at variables in each stack frame, particularly
> that of the view function.
>
> My reasons for saying that this is the right place to fix it is that:
> 1. This only
> happens once per request, as opposed to once per select item per request;
> 2. You have the full power of python to fix whatever needs to be fixed;
> 3. I believe that comparing two integers is a bit faster than comparing two
> strings (unless both strings are interned, in which case you have the cost
> of interning each string generated through stringformat, which is even more
> expensive than a string compare; and 4. The template code, which may be
> manipulated by non-programmers, becomes clearer to understand.
>
> Bill
>
> On Wed, Mar 10, 2010 at 4:17 PM, wolle <wo...@upb.de> wrote:
> > Hi Tom,
>
> > really cool idea, but it does not work...
>
> > <select name="berufe" id="berufe" onchange="onSubmitFilterForm();">
> >                                <option value="0">-- Bitte Berufsgruppe 
> > wählen --</option>
> >                                {% for item in berufe %}
> >                                        <option value="{{item.id}}" {% 
> > ifequal berufe_id item.id|
> > stringformat:"s" %}selected{% endifequal %}>{{item.name}}</option>
> >                                {% endfor %}
> >                        </select>
>
> > does not select any option...
>
> > Any more hints?
>
> > On Mar 10, 5:13 pm, Tom Evans <tevans...@googlemail.com> wrote:
> >> On Wed, Mar 10, 2010 at 3:37 PM, Bill Freeman <ke1g...@gmail.com> wrote:
> >> > That would be my guess.  I presume that item.id is an int, so it's
> >> > likely that you're passing berufe_id as a string.  All the stuff that
> >> > comes from the GET or POST attributes or request, and any
> >> > arguments garnered by the url pattern are strings.  If you're not
> >> > converting it yourself, berufe_id will be a string, and:
>
> >> >  >>> 1 == '1'
> >> >  False
> >> >  >>>
>
> >> > Do you have a view function, or are you fitting this into a generic
> >> > view somehow?
>
> >> > Too bad that there doesn't seem to be a filter to invoke the int 
> >> > constructor,
> >> > or a string method that does it.  You could add a method to your model
> >> > that returns id as a string, then
>
> >> >   ...{% ifequal item.id_as_string berufe_id %}...
>
> >> {% ifequal item.id|stringformat:"s" berufe_id %}
>
> >> Cheers
>
> >> Tom
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Django users" group.
> > To post to this group, send email to django-us...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > django-users+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/django-users?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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