Django - javascript - ajax не работает со строками, созданными на javascript

I have three classes lets say,

class Item(models.Model):
    id = models.AutoField(primary_key=True)  # Explicitly define the id column as the primary key
    itemref = models.IntegerField(blank=True, null=True)
    code = models.CharField(max_length=150, db_collation='Turkish_CI_AS', blank=True, null=True)
    tanimlama = models.CharField(max_length=150, db_collation='Turkish_CI_AS', blank=True, null=True)
    itemname = models.CharField(max_length=150, db_collation='Turkish_CI_AS', blank=True, null=True)

class SAFiche(models.Model):
     nothing important

class SALine(models.Model):
    safiche = models.ForeignKey(SAFiche, on_delete=models.CASCADE)
    item = models.ForeignKey('accounting.Item', on_delete=models.CASCADE)



В представлениях у меня есть ajax для автошаблона:

def item_autocomplete(request):

    query = request.GET.get('q', '')
    items = Item.objects.filter(
        Q(code__icontains=query) |
        Q(itemname__icontains=query) |
        Q(tanimlama__icontains=query)
    )[:10]  # Limit to 10 results

    results = []
    for item in items:
        label = f"{item.code or ''} - {item.itemname or item.tanimlama or ''}"
        results.append({
            'id': item.id,
            'label': label.strip(' -'),
        })
    return JsonResponse(results, safe=False)

Я правильно настроил отдых. Вот мои формы:

class SALineCreateForm(forms.ModelForm):
    urun_search = forms.CharField(
        label="Ürün Ara",
        required=False,
        widget=forms.TextInput(attrs={
            'placeholder': 'Ürün kodu veya adı...',
            'class': 'item-search-input border rounded p-2 w-full',
            'autocomplete': 'off'
        })
    )

    class Meta:
        model = SALine
        fields = [
            'urun', 'miktar'
        ]
        widgets = {
            'urun': forms.HiddenInput(),
            'miktar': forms.NumberInput(attrs={'class': 'w-full form-input rounded-md'}),

        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # If editing an existing line, fill the search box with the item name
        if getattr(self.instance, 'urun_id', None):
            self.fields['urun_search'].initial = str(self.instance.urun)

SALineCreateFormSet = inlineformset_factory(
    SAFiche,
    SALine,
    form=SALineCreateForm,
    extra=1,        
    can_delete=True
)

Автокомплиментация хорошо работает с формами, созданными в строках. Однако, когда я использую javascript с кнопкой создания новых строк, урун-поле автокомплитируется. В консоли ничего не происходит, если я пишу что-либо во вновь созданные строки urun-поля. В чем может быть проблема? Как я могу ее решить?

Урун в переводе с турецкого означает «предмет».

Вот как я добавляю новые строки товаров:

<script>
    document.addEventListener('DOMContentLoaded', () => {
        const formsetContainer = document.getElementById('formset-container');
        const emptyFormTemplate = document.getElementById('empty-form-template').innerHTML;
        const addProductButton = document.getElementById('add-product');

        addProductButton.addEventListener('click', () => {
            // Get current form count from the management form
            const totalFormsInput = document.querySelector('#id_saline_set-TOTAL_FORMS');
            const totalForms = parseInt(totalFormsInput.value, 10);

            // Create a new form from the empty template
            const newFormHTML = emptyFormTemplate.replace(/__prefix__/g, totalForms);
            formsetContainer.insertAdjacentHTML('beforeend', newFormHTML);

            // Update the TOTAL_FORMS count
            totalFormsInput.value = totalForms + 1;
        });
    });
</script>

А это остальная часть js-кода, который обрабатывает автокомплит:

Не знаю, кто отредактировал мой вопрос как единственную проблему с javascript и подчеркнул, что это не django. И поставил минус. Мне было бы очень приятно, если бы я мог поставить минус тому, кто отредактировал мой вопрос и удалил мой код.

Вот в чем проблема: 1 - Django убегает от пустой формы. Я хранил «пустую форму» в блоке с {% autoescape off %}. 2 - Изменил индекс формы на префикс, после чего проблема решилась.

Вернуться на верх