Skip to content

Commit 4f96e21

Browse files
committed
Resolve applegrew#557 -- Improve documentation for ModelSelect2TagWidget
1 parent 8494b10 commit 4f96e21

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

django_select2/forms.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -552,14 +552,15 @@ class MyModelSelect2TagWidget(ModelSelect2TagWidget):
552552
queryset = MyModel.objects.all()
553553
554554
def value_from_datadict(self, data, files, name):
555-
values = super().value_from_datadict(self, data, files, name)
556-
qs = self.queryset.filter(**{'pk__in': list(values)})
557-
pks = set(str(getattr(o, pk)) for o in qs)
558-
cleaned_values = []
559-
for val in value:
560-
if str(val) not in pks:
561-
val = queryset.create(title=val).pk
562-
cleaned_values.append(val)
555+
'''Create objects for given non-pimary-key values. Return list of all primary keys.'''
556+
values = set(super().value_from_datadict(data, files, name))
557+
# This may only work for MyModel, if MyModel has title field.
558+
# You need to implement this method yourlself, to ensure proper object creation.
559+
pks = self.queryset.filter(**{'pk__in': list(values)}).values_list('pk', flat=True)
560+
pks = set(map(str, pks))
561+
cleaned_values = list(values)
562+
for val in values - pks:
563+
cleaned_values.append(self.queryset.create(title=val).pk)
563564
return cleaned_values
564565
565566
"""

0 commit comments

Comments
 (0)