Django 显示 ID 和描述从查询集表单到下拉列表

Django Display ID and Description From Queryset Form into Dropdown

我想将 table 中的数据显示到 Django 查询集表单中,并正确显示下拉控件的值和文本。

表单编码:

self.fields['testing_field'].queryset = model_abc.objects.all().values_list('description', flat=True)

结果描述也是值:

<select name="cars" id="cars">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

结果预期可以将 id 设置为具有现有描述的值:

<select name="cars" id="cars">
  <option value="1">Volvo</option>
  <option value="2">Saab</option>
  <option value="3">Mercedes</option>
  <option value="4">Audi</option>
</select>

如何在 Django QuerySet 的下拉表单中将 id 设置为一个值?

您需要获取对象的描述和 pk。这很简单:

 possibles = model_abc.objects.all().values_list('pk', 'description')

您可以将其转换为动态选择:

 choices = ( (x['pk'], x['description']) for x in possibles )

或者,您可以在模板中迭代各种可能性

 {% for option in possibles %}
     <option value="{{option.pk}}">{{option.description}}</option>
 {% endfor %}