【问题标题】:format of returned result for .objects.filter(name__containe=data) without quotes sign.objects.filter(name__containe=data) 的返回结果格式,不带引号
【发布时间】:2020-10-08 12:47:39
【问题描述】:

我用 django 编写了一个代码,用户可以在其中搜索数据库表中的单词。我的问题是当我打印返回的结果时,它们包含引号。我怎样才能省略它们?

def My_data_filed(request):
    form = data_filed_Form(request.POST or None)
    data = None
    download_form = None

    if request.method == 'POST':
        if form.is_valid():
            data_g = form.cleaned_data.get('g')
            data = list(data_filed.objects.filter(g__contains=data_g).values())
            print(data_filed.objects.all().values())
            download_form = data_filed_DownloadForm(initial={
                'g': data_g,
            })

    return render(request, 'search_report.html',
                  {
                      'form': form,
                      'data': data,
                      'download_form': download_form
                  })

这段代码的输出是这样的:

 'Creator': 'Davide'

但我只想拥有:

Davide

我的努力出了什么问题?


我将获取的结果写入 csv 文件的代码:(因为我从 cmets 了解到这部分也是相关的)

def resultDownload(request):
    try:
        assert request.method == 'POST'
        form = data_DownloadForm(request.POST)
        assert form.is_valid()
        data_g = form.cleaned_data.get('g')
        data = list(data_filed.objects.filter(data__contains=g).values_list())
    except AssertionError:
        error = 'Your request has some problems.'
        data = error

    attachment = 'SearchedReport.csv'
    response = HttpResponse(content_type='text/csv')

    response['Content-Disposition'] = 'attachment;filename="{}"'.format(attachment)
    response.write(data)
    return response

【问题讨论】:

    标签: django database filter single-quotes outputformat


    【解决方案1】:

    每当您运行像 data_filed.objects.filter(g__contains=data_g).values() 这样的查询集时,它总是返回带有键和值的字典类型的输出。当您使用以下命令将该结果传递给您的模板文件时:

    return render(request, 'search_report.html',
                      {
                          'form': form,
                          'data': data,
                          'download_form': download_form
                      })
    

    它仍然是那种格式。如果只想输出值,则需要这样输出

    {{ data.Creator }}
    

    这将为您提供不带引号的输出“Davide”

    【讨论】:

    • 谢谢。你能告诉我我应该在哪里写这个{{ data.Creator }} 吗?
    • 如果它的位置在模板中,我必须提到我不会将搜索结果返回给模板。我将它们保存在 csv 文件中并返回该文件。在这种情况下也能工作吗?
    • 如果我将.values() 更改为.values_list 我想我将不再有字典。所以我不会有'Creator': 'Davide',而是有'Davide'。但是引号仍然存在,我没有收到Davide 没有引号:((
    • {{ data.Creator }} 应该写在模板文件'search_report.html'中。但是由于您正在写入 CSV 文件。那对你不起作用。模板标签仅用于显示在 Django 模板文件中。
    • 我可以查看您如何将此搜索结果写入 CSV 文件的源代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2015-11-08
    相关资源
    最近更新 更多