Django AdminForm 字段默认值 [英] Django AdminForm field default value

查看:25
本文介绍了Django AdminForm 字段默认值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 Django 管理表单.现在我想用基于我的模型的数据填充它的初始字段.所以我尝试了这个:

I have a Django admin form. And now I want to fill it's initial field with data based on my model. So I tried this:

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)

此时我不知道如何在小部件呈现之前访问电子邮件字段以设置其初始值.我该怎么做?

At this point i don't know how to access email field to set it's initial value before widget is rendered. How can i do this?

推荐答案

我不太确定您需要将电子邮件设置为什么,但您可以在很多不同的地方设置初始值.

I'm not too sure what you need to set email to, but You can set the initial values in lots of different places.

你的函数 def init() 没有正确缩进,我猜是错字?另外,您为什么要专门为电子邮件表单字段提供 TextInput?它已经默认渲染了这个小部件

Your function def init() isn't indented correctly which i guess is a typo? Also, why are you specifically giving the email form field a TextInput? It already renders this widget by default

您可以在表单的初始化(def __ init __(self))中设置电子邮件的初始值

You can set the email's initial value in your form's initialized (def __ init __(self))

(self.fields['email'].widget).initial_value = "something"

或者在model.py中

or in the model.py

email = models.CharField(default="something")

或者像你在 forms.py 中的那样

or as you have in forms.py

email = models.CharField(initial="something")

这篇关于Django AdminForm 字段默认值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆