Как показать сохраненное значение в django-autocomplete-light?

Для отображения сохраненного значения в django-autocomplete-light (далее DAL) необходимо выполнить несколько шагов.

1. Убедитесь, что у вас установлен пакет django-autocomplete-light. Вы можете установить его через pip с помощью команды:

pip install django-autocomplete-light

2. Определите модель, к которой вы хотите добавить автозаполнение. Для этого вам нужно создать класс модели в файле models.py вашего приложения Django. Например, если вы хотите использовать модель "Product", ваш файл models.py может выглядеть следующим образом:

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    # другие поля модели

3. Создайте форму для модели. Создайте файл forms.py в вашем приложении Django и определите форму для модели. Например, для модели Product ваш файл forms.py может выглядеть так:

from django import forms
from dal import autocomplete
from .models import Product

class ProductForm(forms.ModelForm):
    name = forms.ModelChoiceField(
        queryset=Product.objects.all(),
        widget=autocomplete.ModelSelect2(url='product-autocomplete')
    )

    class Meta:
        model = Product
        fields = '__all__'

В приведенном выше коде ModelChoiceField используется для поля name, а autocomplete.ModelSelect2 используется для виджета этого поля.

4. Создайте представление для автозаполнения. Создайте файл views.py в вашем приложении Django и определите представление для автозаполнения. Например, для модели Product и поля name ваш файл views.py может выглядеть следующим образом:

from dal import autocomplete
from .models import Product

class ProductAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        qs = Product.objects.all()

        if self.q:
            qs = qs.filter(name__icontains=self.q)

        return qs

В приведенном выше коде определено представление ProductAutocomplete, которое наследуется от autocomplete.Select2QuerySetView. Метод get_queryset используется для возврата данных автозаполнения и фильтрации результатов по введенному запросу.

5. Обновите файл urls.py в вашем приложении Django, чтобы добавить маршрут для автозаполнения. Например:

from django.urls import path
from .views import ProductAutocomplete

urlpatterns = [
    path('product-autocomplete/', ProductAutocomplete.as_view(), name='product-autocomplete'),
    # другие маршруты
]

В приведенном выше коде у вас есть маршрут 'product-autocomplete/' для представления ProductAutocomplete.

6. Обновите шаблон для отображения формы. В вашем шаблоне Django вы можете использовать виджет DAL для отображения автозаполнения. Например:

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit">
</form>

<script src="https://code.jquery.com/jquery.min.js"></script>
{{ form.name.media }}

В приведенном выше коде у вас есть {{ form.name.media }} для подключения скриптов и стилей DAL, а {{ form.as_p }} используется для отображения поля формы name.

Теперь, когда вы сохраняете значение в поле name модели Product, оно будет отображаться при показе формы или при автозаполнении, если оно соответствует фильтру представления автозаполнения.