Як створити CreateView, який шукає інформацію через HTMX і динамічно оновлює форму?

Я новачок у python та Django. Також новачок у StackOverflow... Я намагаюся створити CreateView з формою, яка містить кнопку для пошуку інформації за допомогою GET-запиту з використанням HTMX. Спочатку користувач побачить повністю порожню форму. Після введення певного поля (в даному випадку серійного номера), він може натиснути кнопку, яка ініціює пошук/GET запит. Після того, як інформація буде отримана за допомогою GET, я хотів би оновити певні поля у формі деякою інформацією з GET (по суті, як автозаповнення). Наразі я зміг створити початковий CreateView (який є простим) і налаштувати кнопку, яка виконує HTMX GET запит; я також зміг отримати необхідну інформацію, але я застряг на тому, щоб оновити/вставити значення, отримані в певні поля форми після GET запиту. Які кроки я повинен зробити, щоб впоратися з цією конкретною частиною? Я спробував додати форму до подання, яке керує HTMX-запитом на отримання, і присвоїти деякі з «початкових» значень, пізніше отримати форму зі значеннями, визначеними як «початкові», і передати форму до Http-відповіді, але це не працює так, як передбачалося. Приклад нижче:

class LookupView(View):
    def get(self, request, *args, **kwargs):
         if request.htmx:
            form = AddItemForm()
            #GET request actions go here that fetch info that is assigned to variables to be used in form
            data = {'field1': field1value,'field2': field2value}
            form = AddItemForm(initial=data)
        return HttpResponse(form)
    else:
        return HttpResponse('No value provided')

<<<Заздалегідь

дякуємо за допомогу та поради!

The common approach is to simply return the options as an html snippet (which htmx expects). So, you may have a partial like
partials/select.html:

{% for option in options %}  
\<option value="{{option.value}}"\>{{option.label}}\</option\>  
{% endfor %}

Then your LookupView can return it with the options filtered based on the parameters you are getting.

LookupView(View):  
def get(self, request, \*args, \*\*kwargs) ...  
options = your_filtered_values here # maybe a queryset from the database?  
response = render(request," partials/select.html", dict(options=options))  
\# set response headers to control where and how to place the returned template  
response\["Hx-Retarget"\] = "css_selector_of_the_target"  
response\["Hx-Reswap"\] = "innerHTML"  
return response
Вернуться на верх