小金鱼呀 python-django-初识Form组件(Form实时更新)
在使用选择标签时,需要注意choices的选项可以从数据库中获取,但是由于是静态字段 ***获取的值无法实时更新***,那么需要自定义构造方法从而达到此目的。
方式一:(推荐)
1 from app01 import models
2 from django.forms.models import ModelChoiceField
3 from django.forms import Form
4 from django.forms import widgets
5 from django.forms import fields
6
7 class LoveForm(forms.Form):
8 price = fields.IntegerField()
9 user_id = fields.IntegerField(
11 widget=widgets.Select()
12 )
13
14 def __init__(self,*args,**kwargs):
15 # 拷贝所有的静态字段,复制给self.fields
16 super(LoveForm,self).__init__(*args,**kwargs)
17 self.fields['user_id'].widget.choices = models.UserInfo.objects.values_list('id', 'username')
方式二:
使用django提供的ModelChoiceField和ModelMultipleChoiceField字段来实现
1 from app01 import models
2 from django.forms.models import ModelChoiceField
3 from django import forms
4 from django.forms import fields
5 from django.forms import widgets
6
7 class LoveForm(forms.Form):
8 user_id2 = ModelChoiceField(
9 queryset=models.UserInfo.objects.all(),
10 to_field_name='id'
11 )
方式二显示的为对象,若要显示数据库里的具体值,需要在建表models.py里加入
def __str__(self):
return self.username