django -autocomplete-light не показывает данные при редактировании - PullRequest
0 голосов
/ 03 мая 2020

Мне бы хотелось иметь автозаполнение того же поля для создания и редактирования модели, поэтому я пытаюсь использовать одну и ту же форму. Проблема в том, что при редактировании объекта не отображается выбранное значение, я получаю пустое значение. Как я могу установить начальное значение для него?

соответствующий код вида:

        if request.method == 'POST':
            form = PuppetClassForm(request.POST, instance=class_instance)
            if form.is_valid():
                class_instance.scope = sub_scope
                class_instance.module = None
                class_instance.save()
            return redirect('show.subscope', user_slug=owner.slug, platform_slug=platform.slug, scope_slug=parent_scope.slug, sub_scope_slug=sub_scope.slug)
        else:
            form = PuppetClassForm(request.GET, initial={ 'name': class_instance.id, 'description': class_instance.description })
            if class_slug:
                return render(request, 'classes/edit.html', {'form': form, 'class_instance': class_instance})
            else:
                return render(request, 'classes/edit.html', {'form': form })

Модель:

class PuppetClass(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=256, blank=False)
    description = models.CharField(max_length=256, default='')

Форма:

class PuppetClassForm(forms.ModelForm):

    filters = ~Q(properties=None)
    name = forms.ModelChoiceField(
        queryset=PuppetClass.objects.filter(scope=None).filter(filters).order_by("name"),
        widget=autocomplete.ModelSelect2(url='puppetclass-autocomplete'),
        to_field_name="name"
    )

    description = forms.CharField(required=False)

    def __init__(self, data, **kwargs):
        initial = kwargs.get('initial', {})
        data = {**initial, **data}
        super().__init__(data, **kwargs)

    class Meta:
        model = PuppetClass
        fields = (['name', 'description'])
...