File tree Expand file tree Collapse file tree 1 file changed +9
-8
lines changed Expand file tree Collapse file tree 1 file changed +9
-8
lines changed Original file line number Diff line number Diff line change @@ -552,14 +552,15 @@ class MyModelSelect2TagWidget(ModelSelect2TagWidget):
552
552
queryset = MyModel.objects.all()
553
553
554
554
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)
563
564
return cleaned_values
564
565
565
566
"""
You can’t perform that action at this time.
0 commit comments