【问题标题】:queryset not loaded in ModelSelect2Widget in Django Select2在 Django Select2 的 ModelSelect2Widget 中未加载查询集
【发布时间】:2019-03-18 12:37:24
【问题描述】:

这是我的数据库:

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'},
        )
    )

我想选择每个学生并选择每个主题,但我得到了这个输出:

我什么都看不到

【问题讨论】:

  • 你能分享你的HTML吗
  • 实际上我正在尝试通过 admin.py 来实现。是否需要制作html文件?
  • 我觉得我的查询集没有加载你能帮我吗
  • 你解决了吗?你的例子是让我最接近看到任何东西的东西。我是从自己的 html 执行此操作,但那里没有 html,它只是一个普通的表单对象,处理到渲染器并翻译成字符串。
  • 也许有用,这是生成的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>

标签: django jquery-select2


【解决方案1】:

看起来我们缺少data_urldata_view 设置。如果你使用包含的 django 管理模块,你可以这样:

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'},
        )
    )

【讨论】:

    猜你喜欢
    • 2020-01-09
    • 2014-01-02
    • 2022-08-09
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2019-12-02
    • 2012-03-28
    相关资源
    最近更新 更多