#19928: python_2_unicode_compatible breaks Python 2
-------------------------------+---------------------------------
Reporter: vernondcole | Owner: nobody
Type: Uncategorized | Status: new
Component: Uncategorized | Version: master
Severity: Normal | Keywords: porting to python 3
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+---------------------------------
Following the example in
[https://docs.djangoproject.com/en/1.5/topics/python3/]
I made my models.py look like this:
{{{
from __future__ import unicode_literals
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
#@python_2_unicode_compatible
class Ward_Name(models.Model):
state = models.CharField("State", max_length=55,
help_text="Nigearin State (large political subdivision)")
lga = models.CharField("LGA", max_length=255, blank=True,
help_text="Nigerain Local Government Area (medium political
subdivision)")
ward = models.CharField(max_length=255, blank=True,
help_text="Ward (small political subdivision)")
db_ward = models.CharField("Db Ward",max_length=255, blank=True,
help_text="database altered version of Ward name")
def __str__(self):
return str('State={}, LGA={}, Ward={}, called "{}"'.format(
self.state, self.lga, self.ward, self.db_ward))
class Meta:
unique_together = (("lga","ward"))
index_together = [["lga","ward"]]
}}}
Note that the decorator is commented out...
I test using the following code, which works in both Python2.7 and
Python3.3
$python manage.py x_test
{{{
from __future__ import print_function
from django.core.management.base import BaseCommand
from nomads.models import Ward_Name
class Command(BaseCommand):
args = "<(none)>"
help = 'test reading Ward Name data table'
def handle(self, *args, **options):
self.test_read(*args)
def test_read(self, *args):
qs = Ward_Name.objects.all()
for w in qs:
print('Ward=',w)
}}}
When I un-comment the decorator the program fails under python 2
$ python manage.py x_test
RuntimeError: maximum recursion depth exceeded while calling a Python
object
Is the error in the django 1.5 code, the documentation, or my
understanding?
(the work-around is easy: just do not use the feature and everything
works in both versions)
(My environment is: Ubuntu 12.10 64 bit
django 1.5stable pulled from github this morning
--
Ticket URL: <https://code.djangoproject.com/ticket/19928>
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].
For more options, visit https://groups.google.com/groups/opt_out.