#28075: USE_THOUSAND_SEPARATOR = True, causes foreignkey id to become localized
---------------------------------+--------------------------------------
     Reporter:  George Tantiras  |                    Owner:  nobody
         Type:  Uncategorized    |                   Status:  closed
    Component:  Uncategorized    |                  Version:  1.11
     Severity:  Normal           |               Resolution:  needsinfo
     Keywords:                   |             Triage Stage:  Unreviewed
    Has patch:  0                |      Needs documentation:  0
  Needs tests:  0                |  Patch needs improvement:  0
Easy pickings:  0                |                    UI/UX:  0
---------------------------------+--------------------------------------
Description changed by George Tantiras:

Old description:

> After upgrading to Django 1.11, when a foreignkey points to an id with
> more than 3 digits, it gets localized.
>
> In django admin, when I visit an already existing instance and hit "Save
> and Continue Editing", I receive the following error:
>
> {{{
>
> Exception raised while rendering {% include %} for template
> 'admin/change_form.html'. Empty string rendered instead.
> Traceback (most recent call last):
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/loader_tags.py", line 216, in render
>     return template.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 209, in render
>     return self._render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 199, in _render
>     return self.nodelist.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 990, in render
>     bit = node.render_annotated(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 957, in render_annotated
>     return self.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/defaulttags.py", line 216, in render
>     nodelist.append(node.render_annotated(context))
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 957, in render_annotated
>     return self.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/defaulttags.py", line 529, in render
>     return self.nodelist.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 990, in render
>     bit = node.render_annotated(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 957, in render_annotated
>     return self.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/defaulttags.py", line 216, in render
>     nodelist.append(node.render_annotated(context))
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 957, in render_annotated
>     return self.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/defaulttags.py", line 411, in render
>     return
> strip_spaces_between_tags(self.nodelist.render(context).strip())
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 990, in render
>     bit = node.render_annotated(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 957, in render_annotated
>     return self.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/defaulttags.py", line 322, in render
>     return nodelist.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 990, in render
>     bit = node.render_annotated(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 957, in render_annotated
>     return self.render(context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 1046, in render
>     return render_value_in_context(output, context)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/template/base.py", line 1024, in render_value_in_context
>     value = force_text(value)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/utils/encoding.py", line 76, in force_text
>     s = six.text_type(s)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/utils/html.py", line 385, in <lambda>
>     klass.__str__ = lambda self: mark_safe(klass_str(self))
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/forms/boundfield.py", line 41, in __str__
>     return self.as_widget()
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/forms/boundfield.py", line 120, in as_widget
>     **kwargs
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/forms/widgets.py", line 220, in render
>     context = self.get_context(name, value, attrs)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/contrib/admin/widgets.py", line 281, in get_context
>     'rendered_widget': self.widget.render(name, value, attrs),
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/dal/widgets.py", line 150, in render
>     widget = super(WidgetMixin, self).render(name, value, attrs)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/forms/widgets.py", line 220, in render
>     context = self.get_context(name, value, attrs)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/forms/widgets.py", line 665, in get_context
>     context = super(Select, self).get_context(name, value, attrs)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/forms/widgets.py", line 627, in get_context
>     context['widget']['optgroups'] = self.optgroups(name,
> context['widget']['value'], attrs)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/dal/widgets.py", line 140, in optgroups
>     self.filter_choices_to_render(selected_choices)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/dal/widgets.py", line 183, in filter_choices_to_render
>     pk__in=[c for c in selected_choices if c]
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/db/models/query.py", line 781, in filter
>     return self._filter_or_exclude(False, *args, **kwargs)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/db/models/query.py", line 799, in _filter_or_exclude
>     clone.query.add_q(Q(*args, **kwargs))
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/db/models/sql/query.py", line 1260, in add_q
>     clause, _ = self._add_q(q_object, self.used_aliases)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/db/models/sql/query.py", line 1286, in _add_q
>     allow_joins=allow_joins, split_subq=split_subq,
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/db/models/sql/query.py", line 1220, in build_filter
>     condition = self.build_lookup(lookups, col, value)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/db/models/sql/query.py", line 1114, in build_lookup
>     return final_lookup(lhs, rhs)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/db/models/lookups.py", line 24, in __init__
>     self.rhs = self.get_prep_lookup()
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/db/models/lookups.py", line 219, in get_prep_lookup
>     rhs_value = self.lhs.output_field.get_prep_value(rhs_value)
>   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
> packages/django/db/models/fields/__init__.py", line 962, in
> get_prep_value
>     return int(value)
> ValueError: invalid literal for int() with base 10: '1.211'
> }}}
>
> Changing the setting:
>
> {{{
> USE_THOUSANDS_SEPARATOR = False
> }}}
>
> renders everything back to normal.

New description:

 After upgrading to Django 1.11, when a foreignkey points to an id with
 more than 3 digits, it gets localized.

 In django admin, when I visit an already existing instance and hit "Save
 and Continue Editing", I receive the following error:

 {{{

 Exception raised while rendering {% include %} for template
 'admin/change_form.html'. Empty string rendered instead.
 Traceback (most recent call last):
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/loader_tags.py", line 216, in render
     return template.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 209, in render
     return self._render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 199, in _render
     return self.nodelist.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 990, in render
     bit = node.render_annotated(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 957, in render_annotated
     return self.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/defaulttags.py", line 216, in render
     nodelist.append(node.render_annotated(context))
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 957, in render_annotated
     return self.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/defaulttags.py", line 529, in render
     return self.nodelist.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 990, in render
     bit = node.render_annotated(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 957, in render_annotated
     return self.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/defaulttags.py", line 216, in render
     nodelist.append(node.render_annotated(context))
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 957, in render_annotated
     return self.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/defaulttags.py", line 411, in render
     return
 strip_spaces_between_tags(self.nodelist.render(context).strip())
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 990, in render
     bit = node.render_annotated(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 957, in render_annotated
     return self.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/defaulttags.py", line 322, in render
     return nodelist.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 990, in render
     bit = node.render_annotated(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 957, in render_annotated
     return self.render(context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 1046, in render
     return render_value_in_context(output, context)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/template/base.py", line 1024, in render_value_in_context
     value = force_text(value)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/utils/encoding.py", line 76, in force_text
     s = six.text_type(s)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/utils/html.py", line 385, in <lambda>
     klass.__str__ = lambda self: mark_safe(klass_str(self))
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/forms/boundfield.py", line 41, in __str__
     return self.as_widget()
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/forms/boundfield.py", line 120, in as_widget
     **kwargs
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/forms/widgets.py", line 220, in render
     context = self.get_context(name, value, attrs)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/contrib/admin/widgets.py", line 281, in get_context
     'rendered_widget': self.widget.render(name, value, attrs),
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/dal/widgets.py", line 150, in render
     widget = super(WidgetMixin, self).render(name, value, attrs)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/forms/widgets.py", line 220, in render
     context = self.get_context(name, value, attrs)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/forms/widgets.py", line 665, in get_context
     context = super(Select, self).get_context(name, value, attrs)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/forms/widgets.py", line 627, in get_context
     context['widget']['optgroups'] = self.optgroups(name,
 context['widget']['value'], attrs)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/dal/widgets.py", line 140, in optgroups
     self.filter_choices_to_render(selected_choices)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/dal/widgets.py", line 183, in filter_choices_to_render
     pk__in=[c for c in selected_choices if c]
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/db/models/query.py", line 781, in filter
     return self._filter_or_exclude(False, *args, **kwargs)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/db/models/query.py", line 799, in _filter_or_exclude
     clone.query.add_q(Q(*args, **kwargs))
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/db/models/sql/query.py", line 1260, in add_q
     clause, _ = self._add_q(q_object, self.used_aliases)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/db/models/sql/query.py", line 1286, in _add_q
     allow_joins=allow_joins, split_subq=split_subq,
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/db/models/sql/query.py", line 1220, in build_filter
     condition = self.build_lookup(lookups, col, value)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/db/models/sql/query.py", line 1114, in build_lookup
     return final_lookup(lhs, rhs)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/db/models/lookups.py", line 24, in __init__
     self.rhs = self.get_prep_lookup()
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/db/models/lookups.py", line 219, in get_prep_lookup
     rhs_value = self.lhs.output_field.get_prep_value(rhs_value)
   File "/home/flyer/.virtualenvs/erad/lib/python3.4/site-
 packages/django/db/models/fields/__init__.py", line 962, in get_prep_value
     return int(value)
 ValueError: invalid literal for int() with base 10: '1.211'
 }}}

 Changing the setting:

 {{{
 USE_THOUSAND_SEPARATOR = False
 }}}

 renders everything back to normal.

--

--
Ticket URL: <https://code.djangoproject.com/ticket/28075#comment:7>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" 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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/066.3a49bb4130e93669e8eb91d41b9de7d5%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to