Как автоматически заполнить все поля ввода из базы данных, введя данные в одно текстовое поле с помощью 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);
});
});