0

我的 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

上面的代码是我稍后在适当的 Admin 模型中使用 form = MyForm 调用的表单的一部分。发生的情况是管理页面将正确加载并显示所有适当的数据,但“折扣”字段的初始值将始终为空字符串,无选项,并且永远不会准确表示与对象一起存储的折扣百分比其数据填充表单。该字段也是唯一发生这种情况的字段,即使我不覆盖可用的选项,问题仍然存在(在这种情况下,总是在页面加载时选择 10% 的选项)

有什么想法吗?提前致谢。

4

1 回答 1

0

您的这部分代码是错误的

self.initial['discount'] = \
                self.instance.discount

你应该做

self.fields['discount'].initial = \
                self.instance.discount
于 2012-06-20T19:30:33.003 回答