Fixed #13206 -- call super().__init__() in Model.__init__ to allow mixins to do things there.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15317 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
561af6417e
commit
91414c4bb8
|
@ -1,6 +1,7 @@
|
|||
import types
|
||||
import sys
|
||||
from itertools import izip
|
||||
|
||||
import django.db.models.manager # Imported to register signal handler.
|
||||
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned, FieldError, ValidationError, NON_FIELD_ERRORS
|
||||
from django.core import validators
|
||||
|
@ -361,6 +362,7 @@ class Model(object):
|
|||
pass
|
||||
if kwargs:
|
||||
raise TypeError("'%s' is an invalid keyword argument for this function" % kwargs.keys()[0])
|
||||
super(Model, self).__init__()
|
||||
signals.post_init.send(sender=self.__class__, instance=self)
|
||||
|
||||
def __repr__(self):
|
||||
|
|
|
@ -143,3 +143,11 @@ class Copy(NamedURL):
|
|||
|
||||
def __unicode__(self):
|
||||
return self.content
|
||||
|
||||
class Mixin(object):
|
||||
def __init__(self):
|
||||
self.other_attr = 1
|
||||
super(Mixin, self).__init__()
|
||||
|
||||
class MixinModel(models.Model, Mixin):
|
||||
pass
|
||||
|
|
|
@ -4,7 +4,7 @@ from django.core.exceptions import FieldError
|
|||
from django.test import TestCase
|
||||
|
||||
from models import (Chef, CommonInfo, ItalianRestaurant, ParkingLot, Place,
|
||||
Post, Restaurant, Student, StudentWorker, Supplier, Worker)
|
||||
Post, Restaurant, Student, StudentWorker, Supplier, Worker, MixinModel)
|
||||
|
||||
|
||||
class ModelInheritanceTests(TestCase):
|
||||
|
@ -269,3 +269,7 @@ class ModelInheritanceTests(TestCase):
|
|||
self.assertNumQueries(1,
|
||||
lambda: ItalianRestaurant.objects.select_related("chef")[0].chef
|
||||
)
|
||||
|
||||
def test_mixin_init(self):
|
||||
m = MixinModel()
|
||||
self.assertEqual(m.other_attr, 1)
|
||||
|
|
Loading…
Reference in New Issue