Fixed #13366 -- Corrected the field __setstate__ method to avoid a race condition when initially importing models. Thanks to Brett Hoerner for the report.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@13005 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2010-04-20 14:39:46 +00:00
parent 424be52372
commit cb906e1593
4 changed files with 20 additions and 1 deletions

View File

@ -143,7 +143,10 @@ class Field(object):
self.__dict__.update(data)
# Restore the default
self.default = self.model._meta.get_field_by_name(self.name)[0].default
try:
self.default = self.model._meta.get_field(self.name).default
except FieldDoesNotExist:
self.default = NOT_PROVIDED
def to_python(self, value):
"""

View File

@ -0,0 +1,7 @@
from django.contrib.comments.models import Comment
from django.db import models
# Regression for #13368. This is an example of a model
# that imports a class that has an abstract base class.
class CommentScore(models.Model):
comment = models.OneToOneField(Comment, primary_key=True)

View File

@ -987,6 +987,15 @@ class ManageValidate(AdminScriptTestCase):
self.assertNoOutput(err)
self.assertOutput(out, '0 errors found')
def test_app_with_import(self):
"manage.py validate does not raise errors when an app imports a base class that itself has an abstract base"
self.write_settings('settings.py',
apps=['admin_scripts.app_with_import', 'django.contrib.comments'],
sdict={'DEBUG': True})
args = ['validate']
out, err = self.run_manage(args)
self.assertNoOutput(err)
self.assertOutput(out, '0 errors found')
##########################################################################
# COMMAND PROCESSING TESTS