使用数据库中的数据填充django表单

前端之家收集整理的这篇文章主要介绍了使用数据库中的数据填充django表单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的form.py中有一个表单,如下所示:
from django import forms

class ItemList(forms.Form):
     item_list = forms.ChoiceField()

我需要使用数据库中的某些数据填充item_list.当在HTML item_list中生成时应该是这样的:

<select title="ItemList">
   <option value="1">Select Item 1</option>
   <option value="2">Select Item 2</option>
</select>

select语句中的options值几乎会每次更改,因为查询中的变量通常会更改生成新结果.

我需要放在view.py以及我的模板文件中,用数据库中的值填充ItemList?

解决方法

看看Django文档中的这个例子:

> http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#a-full-example

基本上,您可以使用Field对象上的queryset关键字参数来从数据库中抓取行:

class BookForm(forms.Form):
    authors = forms.ModelMultipleChoiceField(queryset=Author.objects.all())

更新

如果您需要动态模型选择字段,则可以在表单的构造函数中移交您的项目ID,并相应调整查询器:

class ItemForm(forms.Form):

    # here we use a dummy `queryset`,because ModelChoiceField
    # requires some queryset
    item_field = forms.ModelChoiceField(queryset=Item.objects.none())

    def __init__(self,item_id):
        super(ItemForm,self).__init__()
        self.fields['item_field'].queryset = Item.objects.filter(id=item_id)

附:我没有测试这个代码,我不知道你的确切设置,但我希望主要的想法.

资源:

> http://www.mail-archive.com/django-users@googlegroups.com/msg48058.html
> http://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.ModelChoiceField

猜你在找的MsSQL相关文章