【问题标题】:Populate form data in CreateView with get_initial() from model使用模型中的 get_initial() 在 CreateView 中填充表单数据
【发布时间】:2020-05-02 12:53:24
【问题描述】:

我想要一个创建表单,人们可以在其中选择预先填充表单的“模板”。该模板是具有相同字段的另一个模型。 例如,我有一个结构相同的 AbstractArticle 和 TemplateArticle 和 RealArticle。

我正在尝试使用 get_initial() 来填充表单,但它只需要一个字典,这很奇怪,因为表单非常复杂(我无法让它与下拉菜单一起使用)。

有没有办法提供模型实例作为初始数据?

【问题讨论】:

    标签: django


    【解决方案1】:

    没有查看您的实际代码和您尝试过的内容,我有点迷茫,但也许这篇文章 answer 是您正在寻找的。对该答案进行一些更改,我可以给您:

    def __init__(self, *args, **kwargs):
        initial = super(MyFormView, self).__init__(*args, **kwargs)
        self.temp_mod = kwargs.pop('template_model_id')
        template_model = TemplateModel.objects.get(id=temp_mod)
        # update initial field defaults with custom set default values:
        initial.update(
            {'field1': template_model.data1, 
             'field2': template_model.data2})
        return initial
    

    未测试

    这里的思路是从kwargs中获取模板模型id,获取对象然后将initial.update中的信息填充到对应的字段中。

    【讨论】:

    • 我做了类似的事情,但是在更新初始时我无法让它在下拉列表和多选框上工作
    • 不看代码我不能再多说了,请编辑你的问题添加代码
    猜你喜欢
    • 2019-01-29
    • 2018-11-24
    • 1970-01-01
    • 2014-06-11
    • 2021-11-14
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多