1. 程式人生 > >專案筆記(Django)

專案筆記(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='管理街道') # 單選