在Django中构建选择选项
我想创建一个表单,在查看时,从数据库中查询用户喜爱的水果,并显示如下:在Django中构建选择选项,django,forms,drop-down-menu,Django,Forms,Drop Down Menu,我想创建一个表单,在查看时,从数据库中查询用户喜爱的水果,并显示如下: <select size="4"> <option selected>Apples</option> <option>Bananas</option> <option>Oranges</option> <option>Watermelon</option> </select> 使用表单的视图将: 获
<select size="4">
<option selected>Apples</option>
<option>Bananas</option>
<option>Oranges</option>
<option>Watermelon</option>
</select>
使用表单的视图将:
获取用户对象。
在数据库中查询用户喜爱的水果。每个都是水果模型的单独对象。
在表单中加载2中收集的水果选择。
我曾考虑使用ChoiceField,但看起来您无法动态地将选项列表加载到表单中,至少不能以直接的方式加载。跳过表单并直接在模板上生成代码是否更好?或者是否有方法在视图中加载包含用户项的表单ChoiceField
此外,是否有任何一般的经验法则规定使用django表单字段构建表单比在模板上生成表单代码更容易?这并不难。您可以使用modelform轻松地完成这一点 见:
Django框架的优点之一是它的表单处理和验证方法。因此,如果可能,最好使用Django表单或模型表单。这并不难。您可以使用modelform轻松地完成这一点 见: Django框架的优点之一是它的表单处理和验证方法。因此,如果可能,最好使用Django表单或模型表单。创建将在视图中使用的或。这两个类之间的区别在于,ModelForm的构建非常类似于models.py文件中定义的数据库模型,其中表单可以具有自定义属性
from django.forms import ModelForm
class FruitForm(ModelForm):
class Meta:
model = User
fields = ('favorite-fruits', )
创建将在视图中使用的或。这两个类之间的区别在于,ModelForm的构建非常类似于models.py文件中定义的数据库模型,其中表单可以具有自定义属性
from django.forms import ModelForm
class FruitForm(ModelForm):
class Meta:
model = User
fields = ('favorite-fruits', )
我发现这个技巧的答案是重写形式_uinit _uu,这样它就接受了一个新的关键字参数,在本例中就是用户
views.py代码段
forms.py代码段
我发现这个技巧的答案是重写形式_uinit _uu,这样它就接受了一个新的关键字参数,在本例中就是用户
views.py代码段
forms.py代码段
from django import forms
class FruitForm(forms.Form):
fruits = forms.ModelChoiceField(queryset=Fruit.objects.all())
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(FruitForm, self).__init__(*args, **kwargs)
if user:
self.fields['fruits'].queryset = Fruit.objects.filter(user=user)