【发布时间】:2018-12-27 07:58:59
【问题描述】:
我有一个更新视图:
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)
我的问题是在更新视图上我没有看到用户最后保存的值:
cotisation_acquittee
frais_de_dossier_acquittes
a_jour
我从the doc 了解到,CHOICES 选项有一些特别之处:
如果模型字段设置了选项,那么表单字段的小部件将 设置为 Select,选择来自模型字段的选择。 选项通常包括被选中的空白选项 默认。如果该字段是必需的,这将强制用户进行 选择。如果模型字段不包括空白选项 有空白=假和一个明确的默认值(默认值将 而是最初选择)。
(我验证了,db里有保存信息:
|2.0|0.0|1.0
)
如何使数据库中保存的最后一个值出现在更新 html 表单的选择框中?
【问题讨论】:
-
选项是不变的,如果你想显示选项中已经存在的值,那么你需要动态加载该值。
-
我不确定我明白你的意思:我想在表单中显示用户保存的最后一个选项(这是我在选项中固定的值之一)
-
那个子类有什么意义?它根本不会向父类添加任何内容。 (而且定义只调用父类的
__init__方法绝对没有意义。) -
你为什么在这里使用浮点字段? oui 或 non 的选择应该是一个布尔字段。
-
@romainjouin 啊..知道了。这意味着数据未正确保存。使用时从下拉列表中选择一个选项并保存。然后,当下次填充下拉列表时,如果模型字段之前正确保存,它应该显示最后保存的选项。