專案筆記(Django)
阿新 • • 發佈:2018-11-11
Form那些事兒
常用欄位與外掛
建立Form類時,單選框的那些該注意的事
關於choice的注意事項:
在使用選擇標籤時,需要注意choices的選項可以從資料庫中獲取,但是由於是靜態欄位 ***獲取的值無法實時更新***,那麼需要自定義構造方法從而達到此目的。
方式一:
from django.forms import Form from django.forms import widgets from django.forms import fields
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 fieldsclass 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='管理街道') # 單選