Django Select2 ModelSelect2TagWidget Problem

290 Views Asked by At

I followed the documentation on how to use the ModelSelect2TagWidget from the django-select2 library, but when I submit the form I get "Select a valid choice error" on the tag field regardless the tag is saved in the database.

models.py

class FromTo(models.Model):
    from_to = models.CharField(max_length=100)

class Course(models.Model):
    from_to = models.ForeignKey(
        FromTo, null=True, on_delete=models.SET_NULL)

forms.py

class FromToWidget(s2forms.ModelSelect2TagWidget):
    queryset = models.FromTo.objects.all()
    search_fields = ['from_to__icontains']

    def value_from_datadict(self, data, files, name):
        values = super().value_from_datadict(data, files, name)

        queryset = self.get_queryset()
        pks = queryset.filter(
            **{'pk__in': [v for v in values if v.isdigit()]}).values_list('pk', flat=True)
        cleaned_values = []
        for val in values:
            if represent_int(val) and int(val) not in pks or not represent_int(val) and force_text(val) not in pks:
                val = queryset.create(from_to=val).pk
            cleaned_values.append(val)
        return cleaned_values

class CourseModelForm(forms.ModelForm):
    from_to = forms.ModelChoiceField(
        models.FromTo.objects.all(), widget=FromToWidget(model=models.FromTo))
0

There are 0 best solutions below