我的django管理窗體不顯示給定對象數據的正確初始值。我試過修改表單來顯式設置加載時的初始值,但這也沒有效果。我的代碼如下所示:Django管理窗體不顯示所有實例數據
DISCOUNT_OVERRIDE_CHOICES = (
(None, ""),
(Decimal('10'), _('10%')),
(Decimal('20'), _('20%')),
(Decimal('30'), _('30%')),
(Decimal('40'), _('40%')),
(Decimal('50'), _('50%')),
)
self.fields['discount'].choices = \
DISCOUNT_OVERRIDE_CHOICES
if self.instance.discount:
self.initial['discount'] = \
self.instance.discount
上面的代碼是我後來與形式調用相應的管理模型= MyForm的窗體的一部分。會發生什麼情況是管理頁面將正確加載並顯示所有適當的數據,但「折扣」字段的初始值始終爲空字符串「無」選項,並且永遠不會準確表示與對象一起存儲的折扣百分比其數據填充表單。這個字段是它發生的唯一字段,即使我沒有覆蓋可用的選項,問題仍然存在(在這種情況下,總是在頁面加載時選擇10%選項)
有什麼想法?提前致謝。
是''discount'的models.DecimalField'的實例? –
是的。在這種情況下,我可以不設置無選項嗎? – nct25
您不應該設置初始值,因爲Django將始終使用'ModelForm'中的實例的數據預填充表單。你是否可能會重寫表單,特別是表單上的「折扣」字段?它必須始終保持爲「DecimalField」,否則該值不會是「Decimal」類型,因此不符合您的選擇。 –