набор запросов не загружен в ModelSelect2Widget в Django Select2

#django #jquery-select2

#django #jquery-select2

Вопрос:

Вот моя база данных:

 class Student(models.Model):
    name = models.CharField(max_length=25)

class Subject(models.Model):
   title=models.CharField(max_length=25)
   marks = models.FloatField()
   student = models.ForeignKey(
        Student,
        related_name='student',
        on_delete=models.PROTECT,
    )
  

Теперь я хочу использовать Django select 2 для просмотра этих сведений в панели администратора Django.

Вот моя форма:

 class AddressForm(forms.ModelForm):
    student = forms.ModelChoiceField(
        queryset=Student.objects.all(),
        widget=ModelSelect2Widget(
            model=Student,
            search_fields=['name__icontains'],
        )
    )

    subject = forms.ModelChoiceField(
        queryset=Subject.objects.all(),
        widget=ModelSelect2Widget(
            model=Subject,
            search_fields=['title__icontains'],
            dependent_fields={'student': 'student'},
        )
    )
  

Я хочу выбрать каждого ученика и выбрать каждый предмет, но я получаю этот вывод:

Мой вывод

Я ничего не могу просмотреть

Комментарии:

1. Можете ли вы также поделиться своим HTML

2. на самом деле я пытаюсь сделать это через admin.py . Необходимо ли создавать HTML-файл?

3. я чувствую, что мой набор запросов не загружен, можете ли вы помочь мне с этим

4. вам удалось это решить? ваш пример был тем, что приблизило меня к тому, чтобы увидеть что-либо вообще. Я делаю это из собственного html, но там нет html, это просто объект формы, обработанный средством визуализации и переведенный в строку.

5. может быть полезным, это созданный html: <tr><th><label for="id_accession">Accession:</label></th><td><select name="accession" class="django-select2 django-select2-heavy" data-ajax--type="GET" id="id_accession" data-minimum-input-length="0" data-ajax--cache="true" data-allow-clear="false" data-ajax--url="/select2/fields/auto.json" data-field_id="MTQwNTE1NzY1Mzg1OTI4:1hLpuc:1suqrRkIuJPapaosXDsnKE3P_Pw" required></select></td></tr>

Ответ №1:

Похоже, нам не хватало параметра data_url , или data_view . Если вы используете входящий в комплект модуль django admin, вы можете просто поступить следующим образом:

 class AddressForm(forms.ModelForm):
    student = forms.ModelChoiceField(
        queryset=Student.objects.all(),
        widget=ModelSelect2Widget(
            data_url='/admin/<your_app_name>/student/autocomplete/',
            model=Student,
            search_fields=['name__icontains'],
        )
    )

    subject = forms.ModelChoiceField(
        queryset=Subject.objects.all(),
        widget=ModelSelect2Widget(
            data_url='/admin/<your_app_name>/subject/autocomplete/',
            model=Subject,
            search_fields=['title__icontains'],
            dependent_fields={'student': 'student'},
        )
    )