如何向django管理员页面用户公开批量创建?

如何向django管理员页面用户公开批量创建?,django,model,bulk,Django,Model,Bulk,假设,作为管理过程的一部分,数千个值是离线创建的。这些值输入到一个非常简单的模型中: class Foo(models.Model): value = models.CharField(max_length=32) 我希望在模型创建页面上有一个字段,允许用户在中输入(复制粘贴)1000个值,从而在表中创建1000行 如果我可以在模型创建中添加一个文本字段,那么我所要做的就是解析出值并为每个值调用Foo.create。我将如何添加这个自由格式字段,以及当用户点击保存按钮时我将如何处理

假设,作为管理过程的一部分,数千个值是离线创建的。这些值输入到一个非常简单的模型中:

 class Foo(models.Model):
     value = models.CharField(max_length=32)
我希望在模型创建页面上有一个字段,允许用户在中输入(复制粘贴)1000个值,从而在表中创建1000行


如果我可以在模型创建中添加一个文本字段,那么我所要做的就是解析出值并为每个值调用Foo.create。我将如何添加这个自由格式字段,以及当用户点击保存按钮时我将如何处理它。。。还是说我应该以完全不同的方式来处理这个问题?

我意识到我的评论现在更像是一个答案

当然,为什么不呢?你甚至不需要django来做这个。您可以创建一个
,并在视图中按换行符解析数据

通过admin.get_URL创建自定义管理员视图,并为批量创建页面编写自定义视图

这里有一个复制并粘贴的
get\u URL

class MyModelAdmin(admin.ModelAdmin):
    def get_urls(self):
        urls = super(MyModelAdmin, self).get_urls()
        my_urls = [
            url(r'^my_view/$', self.my_view),
        ]
        return my_urls + urls

    def my_view(self, request):
        # ...
        context = dict(
           # Include common variables for rendering the admin template.
           self.admin_site.each_context(request),
           # Anything else you want in the context...
        )
        if request.method == 'POST':
          for line in request.POST['bulk-create-paste'].split('\n'):
            Foo.objects.create(myfield=line)
        return TemplateResponse(request, "sometemplate.html", context)
sometemplate.html

粘贴批量创建信息


我不知道为什么,但我在创建自定义管理视图时遇到了很多麻烦。你不仅回答了我的问题,还救了我的命。非常感谢!回答得又好又干净。我确实建议使用
@method\u decorator(需要员工)
,这样不仅任何人都可以访问页面和
呈现
快捷方式,而不是
模板响应
  <form method="POST">
    <p>Paste bulk create info.</p>
    <textarea name="bulk-create-paste">
    </textarea>
  </form>