mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Fixed #9362 -- Prevented inline forms from overwriting the content_type_id attribute on objets being inlined. Thanks to carljm for the report and patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10667 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
51
tests/regressiontests/admin_inlines/models.py
Normal file
51
tests/regressiontests/admin_inlines/models.py
Normal file
@@ -0,0 +1,51 @@
|
||||
"""
|
||||
Testing of admin inline formsets.
|
||||
|
||||
"""
|
||||
from django.db import models
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.contenttypes import generic
|
||||
|
||||
class Parent(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
class Teacher(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
class Child(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
teacher = models.ForeignKey(Teacher)
|
||||
|
||||
content_type = models.ForeignKey(ContentType)
|
||||
object_id = models.PositiveIntegerField()
|
||||
parent = generic.GenericForeignKey()
|
||||
|
||||
def __unicode__(self):
|
||||
return u'I am %s, a child of %s' % (self.name, self.parent)
|
||||
|
||||
__test__ = {'API_TESTS': """
|
||||
|
||||
# Regression test for #9362
|
||||
|
||||
>>> sally = Teacher.objects.create(name='Sally')
|
||||
>>> john = Parent.objects.create(name='John')
|
||||
>>> joe = Child.objects.create(name='Joe', teacher=sally, parent=john)
|
||||
|
||||
The problem depends only on InlineAdminForm and its "original" argument, so
|
||||
we can safely set the other arguments to None/{}. We just need to check that
|
||||
the content_type argument of Child isn't altered by the internals of the
|
||||
inline form.
|
||||
|
||||
>>> from django.contrib.admin.helpers import InlineAdminForm
|
||||
>>> iaf = InlineAdminForm(None, None, {}, {}, joe)
|
||||
>>> iaf.original
|
||||
<Child: I am Joe, a child of John>
|
||||
|
||||
"""
|
||||
}
|
||||
Reference in New Issue
Block a user