让我们说,作为管理流程的一部分,数以千计的值是离线创建的。这些值被输入到一个简单的模型中:
class Foo(models.Model):
value = models.CharField(max_length=32)
我想在模型创建页面上有一个字段,允许用户输入(复制 - 粘贴)1000个值,因此,表格中将创建1000行。
如果我可以在模型创建中添加文本字段,我所要做的就是解析值并为每个值调用Foo.create。如何添加此自由格式字段,以及当用户点击“保存”按钮时如何处理它? ......或者我应该采取完全不同的方式来解决这个问题?
答案 0 :(得分:3)
我意识到我的评论现在更像是一个答案。
当然,为什么不呢?你几乎不需要django。您可以创建一个<textarea name="foo"></textarea>
,并在您的视图中按换行符解析数据。
通过Admin.get_urls创建自定义管理视图,并为批量创建页面编写自定义视图。
https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls
这里是get_urls
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)
<form method="POST">
<p>Paste bulk create info.</p>
<textarea name="bulk-create-paste">
</textarea>
</form>