Oli*_*Oli 16 django choicefield
我在使用ChoiceField在数据库中创建值的下拉列表时遇到问题.这是代码片段
from django import forms
from testplatform.models import ServiceOffering
class ContactForm(forms.Form):
subject = forms.ChoiceField(queryset=ServiceOffering.objects.all())
#subject = forms.ModelMultipleChoiceField(queryset=ServiceOffering.objects.all())
Run Code Online (Sandbox Code Playgroud)
#subject ....行有效,但是当我使用行ChoiceField(queryset ....)时,我收到以下错误.
__init__() got an unexpected keyword argument 'queryset'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Chr*_*att 30
ChoiceField没有查询集.您正在寻找ModelChoiceField
小智 7
如果要从数据库填充下拉列表,我建议您将views.py中单个对象中的所有值传递给模板.你可以这样做:1]从数据库中获取所有值:
objectlist = ModelName.objects.all()
Run Code Online (Sandbox Code Playgroud)
如果您想在下拉列表中排序列表,请执行以下操作:
objectlist = ModelName.objects.all().order_by('fieldname')
Run Code Online (Sandbox Code Playgroud)
如果你想要distinctlist,请执行以下操作:
objectlist = ModelName.objects.distinct('fieldname')
Run Code Online (Sandbox Code Playgroud)
2]传递此渲染这个'对象列表'与模板
return render(request, 'template.html', {'objectlist': objectlist})
Run Code Online (Sandbox Code Playgroud)
3]在模板中使用选择标记,并在用户循环中迭代对象列表.
<select>
{% for element in objectlist %}
<option value={{ element.id }}>{{ element.name }}
</select>
Run Code Online (Sandbox Code Playgroud)
选项标记中的值取决于您需要在API中处理的内容