我有一个Updateview:
class Cotisations_des_adherentsUpdate(UpdateView):
model = Cotisations_des_adherents
form_class = UpdateCotisations_des_adherentsForm
template_name_suffix = '_update'
还有一个模型(在这里提取):
class Cotisations_des_adherents (models.Model):
n_reglement = models.AutoField(primary_key=True)
cotisation_acquittee = models.FloatField( blank=True , null=True, choices=settings.CHOICE_OUI_NON)
frais_de_dossier_acquittes = models.FloatField( blank=True , null=True, choices=settings.CHOICE_OUI_NON)
a_jour = models.FloatField( blank=True , null=True, choices=settings.CHOICE_UN_ZERO)
设置值为:
CHOICE_OUI_NON = [ (1 , "1-oui" ),
(0 , "0-non" )]
CHOICE_SEXE = [ (1, "1-Homme" ),
(2, "2-Femme" ),]
form_class继承自一个个人类:
class UpdateCotisations_des_adherentsForm(Cotisations_des_adherentsForm):
def __init__(self, *args, **kwargs):
super(UpdateCotisations_des_adherentsForm, self).__init__(*args, **kwargs) # Call to ModelForm constructor
超类是(在这里提取):
class Cotisations_des_adherentsForm(ModelForm):
error_css_class = 'error'
required_css_class = 'required'
class Meta:
model = Cotisations_des_adherents
fields = [ "n_reglement",
"cotisation_acquittee",
"a_jour",
]
def __init__(self, *args, **kwargs):
super(Cotisations_des_adherentsForm, self).__init__(*args, **kwargs)
我的问题是在upadte视图上,我看不到用户最后保存的值:
cotisation_acquittee
frais_de_dossier_acquittes
a_jour
从the doc中我了解到CHOICES选项有些特殊之处:
如果模型字段设置了选项,则表单字段的小部件将 设置为“选择”,选择来自“模型”字段的选择。 这些选择通常将包括空白选择 默认情况下。如果需要该字段,这将迫使用户进行 选择。如果模型字段不包括空白选项 具有blank = False和明确的默认值(默认值将为 而不是最初被选中)。
(我已验证,数据库中保存了一些信息:
|2.0|0.0|1.0
)
如何使保存在数据库中的最后一个值显示在更新html表单的选择框中?
答案 0 :(得分:1)
在这里使用浮点数是解决问题的关键。尽管1
和1.0
在数值上是等效的,但是它们的值并不相同,因此该表单无法将存储在数据库中的1.0
识别为该表单中的一种可能选择。
您可能可以通过使用1.0
和0.0
作为CHOICES元组中的值来解决此问题,但是正确的方法是首先使用正确的数据类型,即Boolean。 / p>