V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
askask
V2EX  ›  Django

django 导入 xls

  •  
  •   askask · 2016-01-24 14:32:11 +08:00 · 3673 次点击
    这是一个创建于 3261 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我直接 clone http://django-excel.readthedocs.org 里面的项目下来是没有问题,可以导入 xls 。

    但是把 views.py 里面的 import_data 代码拷贝到我自己的项目中,提示

    “'InMemoryUploadedFile' object has no attribute 'save_book_to_database'”

    原 import_data 代码如下:

    class UploadFileForm(forms.Form):
    file = forms.FileField()

    def import_data(request):
    if request.method == "POST":
        form = UploadFileForm(request.POST,
                              request.FILES)
        if form.is_valid():
            print dir(request.FILES['file'])
            request.FILES['file'].save_book_to_database(
                models=[Question,],
                mapdicts=[
                    ['question_text', 'pub_date', 'slug'],]
            )
            return HttpResponse("OK123", status=200)
        else:
            return HttpResponseBadRequest()
    else:
        form = UploadFileForm()
    return render_to_response(
        'upload_form.html',
        {
            'form': form,
            'title': 'Import excel data into database example',
            'header': 'Please upload sample-data.xls:'
        },
        context_instance=RequestContext(request))
    

    我放入自己 项目后修改为:
    class UploadFileForm(forms.Form):
    file = forms.FileField()

    def import_data(request):
    if request.method == "POST":
    form = UploadFileForm(request.POST,
    request.FILES)
    if form.is_valid():
    print dir(request.FILES['file'])
    request.FILES['file'].save_book_to_database(
    models=[host,],
    mapdicts=[
    ['ip', 'port', 'group','env'],]
    )
    return HttpResponse("OK123", status=200)
    else:
    return HttpResponseBadRequest()
    else:
    form = UploadFileForm()
    return render_to_response(
    'upload_form.html',
    {
    'form': form,
    'title': 'Import excel data into database example',
    'header': 'Please upload sample-data.xls:'
    },
    context_instance=RequestContext(request))

    就修改了 models 和 mapdicts 。

    哪位大神帮忙解读下。问题出哪了。

    6 条回复    2016-03-17 17:07:52 +08:00
    stillwater
        1
    stillwater  
       2016-01-24 20:12:35 +08:00
    file upload handler 忘了设置了吧?
    askask
        2
    askask  
    OP
       2016-01-25 08:59:53 +08:00
    @stillwater 在哪设置的呀。
    askask
        3
    askask  
    OP
       2016-01-25 09:06:46 +08:00
    @stillwater 已找到 我试试。
    askask
        4
    askask  
    OP
       2016-01-25 09:25:53 +08:00
    @stillwater 有个新的问题请教下。

    1 、我导入的数据里面有一个字段是用的 ForeignKey 。
    2 、导入的时候 group 那个字段我填写的是。数字 1
    3 、提示 Cannot assign "1.0": "host.group" must be a "Group" instance.

    xls 实例内容如下:
    ip port group env
    192.168.1.1 8080 1 www


    像这种用了 ForeignKey 的数据如何导入啊。
    askask
        5
    askask  
    OP
       2016-01-25 11:20:51 +08:00
    @askask 已解决 字段名写错了
    zonghua
        6
    zonghua  
       2016-03-17 17:07:52 +08:00 via iPhone
    你用的是什么库?我用 lxml 编译出错,出现各种问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2102 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:12 · PVG 09:12 · LAX 17:12 · JFK 20:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.