14 Django_forms组件之TypedChoiceField类型
如果想要灵活应用TypedChoiceField,那么请看如下:
class TransactionRecord(ActiveBaseModel):
""" 交易记录 """
charge_type_class_mapping = {
1: "success",
2: "danger",
3: "default",
4: "info",
5: "primary",
}
charge_type_choices = ((1, "充值"), (2, "扣款"), (3, "创建订单"), (4, "删除订单"), (5, "撤单"),)
class ChargeModelForm(forms.ModelForm):
# 方式1:
# 静态变量(程序启动,就加载到内存中了,当添加新的值,就需要重新启动程序才可以)
charge_type = forms.TypedChoiceField(
label="类型",
choices=[(1, '充值'), (2, '扣款')], # 只适合固定的数据,不适合去数据表中获取数据
coerce=int, # 将1 2 转换成int类型
)
# creator = forms.ChoiceField(
# label='管理员',
# choices=models.Administrator.objects.filter(id__gt=1).values_list("id", "username")
# )
class Meta:
model = models.TransactionRecord
fields = ['charge_type', 'amount']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 方式2:
# 每次实例化对象试,都会重新获取数据(不用转换)
# self.fields['charge_type'].choices = [(1, '扣款'), (2, '充值')]

浙公网安备 33010602011771号