Django-UpdateView-空的选择字段?

时间:2018-07-19 08:51:21

标签: python django

我有一个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                       

给我一​​个空的select html: enter image description here

the doc中我了解到CHOICES选项有些特殊之处:

  

如果模型字段设置了选项,则表单字段的小部件将   设置为“选择”,选择来自“模型”字段的选择。   这些选择通常将包括空白选择   默认情况下。如果需要该字段,这将迫使用户进行   选择。如果模型字段不包括空白选项   具有blank = False和明确的默认值(默认值将为   而不是最初被选中)。

(我已验证,数据库中保存了一些信息:

|2.0|0.0|1.0

如何使保存在数据库中的最后一个值显示在更新html表单的选择框中?

1 个答案:

答案 0 :(得分:1)

在这里使用浮点数是解决问题的关键。尽管11.0在数值上是等效的,但是它们的值并不相同,因此该表单无法将存储在数据库中的1.0识别为该表单中的一种可能选择。

您可能可以通过使用1.00.0作为CHOICES元组中的值来解决此问题,但是正确的方法是首先使用正确的数据类型,即Boolean。 / p>