我有一个Django管理员窗体。 现在我想用基于我的模型的数据填充它的初始字段。所以,我想这一点:Django AdminForm字段默认值
class OrderForm(forms.ModelForm):
class Meta:
model = Order
email = CharField(initial="null", widget=Textarea(attrs={'rows': 30, 'cols': 100}))
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
products = kwargs['instance'].products.all()
self.message = purchase_message % (
"".join(["<li>" + p.name + ": " + str(p.price) + "</li>" for p in products]),
reduce(lambda x, y:x + y.price, products, 0)
)
# and here I have a message in self.message variable
super(OrderForm, self).__init__(*args, **kwargs)
在这一点上,我不知道如何访问电子邮件字段来设置它的初始值小部件之前被渲染。我怎样才能做到这一点?
如果您自然使用模型管理员的自定义窗体类 – ozgur 2016-12-26 15:13:54
@ozgur,它不起作用。如果您使用自定义表单类,则只需按照另一个答案中的建议使用'get_form'。如果不是,那绝对没有理由这样做。 – Wtower 2016-12-26 17:04:40
如果您提供初始值的字段通过'exclude'属性排除,因为'base_fields'不包含排除的字段,所以其他答案也不起作用。 – ozgur 2016-12-26 17:38:53