Как автоматически заполнить все поля ввода из базы данных, введя данные в одно текстовое поле с помощью django?

Я пытаюсь создать форму, в которой данные формы могут быть автозаполнены из базы данных при вводе поля в форме с помощью django

Я смог увидеть, как это делается на javascript, но я не знаю, как подключить это к моему views.py в django

Создайте в Django конечную точку, возвращающую данные, которые вы хотите автозаполнить. Это может быть функция в вашем файле views.py, которая запрашивает базу данных и возвращает ответ в формате JSON. Python

from django.http import JsonResponse
from django.core import serializers
from .models import YourModel

def get_data(request):
    # Get the data from your model
    data = YourModel.objects.filter(...)  # filter based on your needs
    data_json = serializers.serialize('json', data)
    return JsonResponse(data_json, safe=False)

Добавьте его в urls.py

from django.urls import path
from . import views

urlpatterns = [
    # your other urls
    path('get_data/', views.get_data, name='get_data'),

Используйте Fetch API

document.getElementById('your_input_field').addEventListener('change', 
function() {
    fetch('/get_data/', {
        method: 'GET',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            'input_field': document.getElementById('your_input_field').value
        })
    })
    .then(response => response.json())
    .then(data => {
        // Use the 'data' to autofill your form
        document.getElementById('another_field').value = data.another_field;
        // Repeat for all fields you want to autofill
    })
    .catch((error) => {
    console.error('Error:', error);
    });
});
Вернуться на верх