Skip to content

Commit 526ec4f

Browse files
committed
Pass additional arguments to superclass contribute_to_class()
In Django 3.2 there is an additional argument `private_only` and more could be added in future versions.
1 parent 994d6c1 commit 526ec4f

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

model_utils/fields.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,13 @@ def prepare_class(self, sender, **kwargs):
8585
if not self.has_default():
8686
self.default = tuple(getattr(sender, self.choices_name))[0][0] # set first as default
8787

88-
def contribute_to_class(self, cls, name):
88+
def contribute_to_class(self, cls, name, *args, **kwargs):
8989
models.signals.class_prepared.connect(self.prepare_class, sender=cls)
9090
# we don't set the real choices until class_prepared (so we can rely on
9191
# the STATUS class attr being available), but we need to set some dummy
9292
# choices now so the super method will add the get_FOO_display method
9393
self.choices = [(0, 'dummy')]
94-
super().contribute_to_class(cls, name)
94+
super().contribute_to_class(cls, name, *args, **kwargs)
9595

9696
def deconstruct(self):
9797
name, path, args, kwargs = super().deconstruct()
@@ -130,10 +130,10 @@ def __init__(self, *args, **kwargs):
130130
self.when = when
131131
super().__init__(*args, **kwargs)
132132

133-
def contribute_to_class(self, cls, name):
133+
def contribute_to_class(self, cls, name, *args, **kwargs):
134134
self.monitor_attname = '_monitor_%s' % name
135135
models.signals.post_init.connect(self._save_initial, sender=cls)
136-
super().contribute_to_class(cls, name)
136+
super().contribute_to_class(cls, name, *args, **kwargs)
137137

138138
def get_monitored_value(self, instance):
139139
return getattr(instance, self.monitor)
@@ -249,11 +249,11 @@ def __init__(self, *args, **kwargs):
249249
self.add_excerpt_field = not kwargs.pop('no_excerpt_field', False)
250250
super().__init__(*args, **kwargs)
251251

252-
def contribute_to_class(self, cls, name):
252+
def contribute_to_class(self, cls, name, *args, **kwargs):
253253
if self.add_excerpt_field and not cls._meta.abstract:
254254
excerpt_field = models.TextField(editable=False)
255255
cls.add_to_class(_excerpt_field_name(name), excerpt_field)
256-
super().contribute_to_class(cls, name)
256+
super().contribute_to_class(cls, name, *args, **kwargs)
257257
setattr(cls, self.name, SplitDescriptor(self))
258258

259259
def pre_save(self, model_instance, add):

tests/models.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,8 @@ def __delete__(self, obj):
373373

374374

375375
class CustomDescriptorField(models.IntegerField):
376-
def contribute_to_class(self, cls, name, **kwargs):
377-
super().contribute_to_class(cls, name, **kwargs)
376+
def contribute_to_class(self, cls, name, *args, **kwargs):
377+
super().contribute_to_class(cls, name, *args, **kwargs)
378378
setattr(cls, name, StringyDescriptor(name))
379379

380380

0 commit comments

Comments
 (0)