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