项目笔记(Django)

Form那些事儿

常用字段与插件

创建Form类时,单选框的那些该注意的事

关于choice的注意事项:

在使用选择标签时,需要注意choices的选项可以从数据库中获取,但是由于是静态字段 ***获取的值无法实时更新***,那么需要自定义构造方法从而达到此目的。

方式一:

 
from django.forms import Form
from django.forms import widgets
from django.forms import fields
class RegForm(forms.Form):
city = forms.ChoiceField(
choices=models.City.objects.all().values_list("id", "name"),
label="城市",
initial=1,
widget=forms.widgets.Select
)
# 实时更新(重写父类的init方法)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["city"].widget.choices = models.City.objects.all().values_list("id", "name")

方式二:

 
from django import forms
from django.forms import fields
from django.forms import models as form_model

 
class FInfo(forms.Form):
  authors = form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all()) # 多选  
  street = forms.ModelChoiceField(queryset=Street.objects.all(),empty_label='管理街道') # 单选
 

Form那些事儿

常用字段与插件

创建Form类时,单选框的那些该注意的事

关于choice的注意事项:

在使用选择标签时,需要注意choices的选项可以从数据库中获取,但是由于是静态字段 ***获取的值无法实时更新***,那么需要自定义构造方法从而达到此目的。

方式一:

 
from django.forms import Form
from django.forms import widgets
from django.forms import fields
class RegForm(forms.Form):
city = forms.ChoiceField(
choices=models.City.objects.all().values_list("id", "name"),
label="城市",
initial=1,
widget=forms.widgets.Select
)
# 实时更新(重写父类的init方法)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["city"].widget.choices = models.City.objects.all().values_list("id", "name")

方式二:

 
from django import forms
from django.forms import fields
from django.forms import models as form_model

 
class FInfo(forms.Form):
  authors = form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all()) # 多选  
  street = forms.ModelChoiceField(queryset=Street.objects.all(),empty_label='管理街道') # 单选
 

猜你喜欢

转载自www.cnblogs.com/Zhao--C/p/9942698.html