【问题标题】:Copy all data from one form to another in Django admin在 Django admin 中将所有数据从一个表单复制到另一个表单
【发布时间】:2015-07-18 20:19:00
【问题描述】:

我无法将表单中的数据发送到我的应用程序中的新表单。 我想做以下事情:用户单击记录中的按钮后,该记录数据被复制到另一个空表单。

无需永久或长期存储这些值。仅在从一种表单过渡到另一种填写字段为空白表单时。

基本上是一个Ctrl + C - Ctrl + V的形式,但是复制后不保存记录...

我已经完成了一些类似处理 URL 参数的工作,但我想要一些更简洁的东西。 我需要复制包括内联在内的值。

我想过将数据存储在会话中,然后在目标表单中检索它们。但是,我不知道这是否是实现它的最佳方式。 如果是这样,我如何在 Django 中使用会话?

这是我目前在 admin.py 文件中的代码:

def response_change(self, request, obj):
    # name of the custom button
    if '_copy_and_paste' in request.POST:
        # getting the data and storing the session
        request.session['field_1'] = obj.field_1
        request.session['field_2'] = obj.field_2

        return super(MyClassAdmin, self).response_change(request, obj)

我正在使用 Django 管理员(1.8 版)。

【问题讨论】:

    标签: django forms django-admin


    【解决方案1】:

    无需在会话中存储此信息,您可以将请求对象传递回您的模板页面。

    在您的 settings.py 文件中,确保 context_processors.request 在 context_processors 内:

    TEMPLATES = [
        {
            ...
            'OPTIONS': {
                'context_processors': [
                    ...,
                    'django.template.context_processors.request',  #<- make sure this line is here
                    ...,
                ],
            },
        },
    ]
    

    然后,在你的 views.py

    from django.shortcuts import render
    
    def response_change(request):
        if '_copy_and_paste' in request.POST:
            return render(request, 'your_template.html')
    

    在您的模板中,访问存储在请求中的数据:

    <input type="text" name="field1" value="{% if request.POST.field1 %}{{ request.POST.field1}}{% endif %}">
    

    【讨论】:

    • 你好@Cheng。首先,感谢您的回复!事实证明我不想重定向到自定义模板,因此无法包含 html 代码。我想将用户重定向到相同的表单 DjangoAdmin 但为空,即数据库中没有记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    相关资源
    最近更新 更多