【发布时间】:2021-12-18 08:28:50
【问题描述】:
我正在尝试在管理面板中创建一个动态下拉列表。它应该显示来自某个模型的所有字段。
这是我的代码的 sn-p:
JS_FUNCTION = """
obj = document.getElementById('id_field_name');
for (let i = 0, len = test.length; i < len; i++) {
var opt = document.createElement('option');
opt.value = test[i];
opt.innerHTML = test[i];
obj.appendChild(opt);
}
"""
def set_queryset(value):
# model = SyncModel.objects.get(id=value)
# return model.get_fields()
return ["a", "b", "c", "d"]
class WhitelistForm(forms.ModelForm):
sync_model = forms.ModelChoiceField(
queryset=SyncModel.objects.all(),
widget=forms.Select(
attrs={
"onchange": f'console.log(value); var test = {set_queryset("value")}; {JS_FUNCTION}',
"required": True,
}
),
)
field_name = forms.ChoiceField(
choices=(),
)
class Meta:
model = WhitelistModel
fields = "__all__"
问题是,我需要从模型中返回字段。但是,当我将“值”作为 python 函数的参数传递时,它不会发送打印在console.log 上的 id。
我想知道是否有办法让模型只在表单文件上动态化。
【问题讨论】:
-
我认为你可以使用
react/vue+djangorestframework来做到这一点。
标签: javascript python django forms django-forms