Skip to content

Commit 0681174

Browse files
Support data_view and data_url class attributes on HeavySelect (#182)
1 parent 38ce1d6 commit 0681174

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

django_select2/forms.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ class HeavySelect2Mixin:
229229
"""Mixin that adds select2's AJAX options and registers itself on Django's cache."""
230230

231231
dependent_fields = {}
232+
data_view = None
233+
data_url = None
232234

233235
def __init__(self, attrs=None, choices=(), **kwargs):
234236
"""
@@ -249,8 +251,8 @@ def __init__(self, attrs=None, choices=(), **kwargs):
249251

250252
self.uuid = str(uuid.uuid4())
251253
self.field_id = signing.dumps(self.uuid)
252-
self.data_view = kwargs.pop("data_view", None)
253-
self.data_url = kwargs.pop("data_url", None)
254+
self.data_view = kwargs.pop("data_view", self.data_view)
255+
self.data_url = kwargs.pop("data_url", self.data_url)
254256

255257
dependent_fields = kwargs.pop("dependent_fields", None)
256258
if dependent_fields is not None:

tests/testapp/forms.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ def label_from_instance(self, obj):
5151
return force_str(obj.title).upper()
5252

5353

54+
class ArtistDataViewWidget(HeavySelect2Widget):
55+
data_view = "heavy_data_1"
56+
57+
58+
class PrimaryGenreDataUrlWidget(HeavySelect2Widget):
59+
data_url = "/heavy_data_2/"
60+
61+
5462
class AlbumSelect2WidgetForm(forms.ModelForm):
5563
class Meta:
5664
model = models.Album
@@ -143,11 +151,9 @@ class Select2WidgetForm(forms.Form):
143151

144152

145153
class HeavySelect2WidgetForm(forms.Form):
146-
artist = forms.ChoiceField(
147-
widget=HeavySelect2Widget(data_view="heavy_data_1"), choices=NUMBER_CHOICES
148-
)
154+
artist = forms.ChoiceField(widget=ArtistDataViewWidget(), choices=NUMBER_CHOICES)
149155
primary_genre = forms.ChoiceField(
150-
widget=HeavySelect2Widget(data_view="heavy_data_2"),
156+
widget=PrimaryGenreDataUrlWidget(),
151157
required=False,
152158
choices=NUMBER_CHOICES,
153159
)

0 commit comments

Comments
 (0)