首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何过滤import_export文件

如何过滤import_export文件
EN

Stack Overflow用户
提问于 2020-10-14 03:48:29
回答 1查看 569关注 0票数 0

如何过滤CustomerSectionResource模型?在我的例子中,所有数据保存在excel中的数据库导出中,我只想选择某些数据在excel中导出。我想像这样过滤

例如。

代码语言:javascript
复制
company = FmCustomerUsers.objects.filter(user=request.user.id)
obj = FmCustomerSection.objects.filter(
        fmCustomerID__company_name__in=company.values_list('fmCustomerID__company_name'))

多么?帮我伙计们..。

resources.py

代码语言:javascript
复制
class FmCustomerSectionResource(resources.ModelResource):
    fmCustomerID = fields.Field(attribute='customer', column_name='customer',
                            widget=ForeignKeyWidget(FmCustomer))

    class Meta:
        model = FmCustomerSection
        fields = ('fmCustomerID', 'section', 'inputdate', 'inputBy', 'modifyDate', 'modifyBy', 'status')

views.py

代码语言:javascript
复制
from tablib import Dataset
from .resources import FmCustomerSectionResource
def import_Section(request):
    if request.method == 'POST':
        file_format = request.POST['file-format']
        company = FmCustomerUsers.objects.filter(user=request.user.id)
        product_resource = FmCustomerSectionResource.objects.filter(
        fmCustomerID__company_name__in=company.values_list('fmCustomerID__company_name'))
        dataset = Dataset()
        new_city = request.FILES['importData']

        if file_format == 'XLS':
            imported_data = dataset.load(new_city.read(), format='xls')
            result = product_resource.import_data(dataset, dry_run=True)

        elif file_format == 'CSV':
            imported_data = dataset.load(new_city.read(), format='csv')
            # Testing data import
            result = product_resource.import_data(dataset, dry_run=True)

        if not result.has_errors():
            # Import now
            product_resource.import_data(dataset, dry_run=False)

    return redirect('Section')

def export_Section(request):
    
    if request.method == 'POST':
        # Get selected option from form
        file_format = request.POST['importData']
        product_resource = FmCustomerSectionResource()
        dataset = product_resource.export()
        if file_format == 'CSV':
            response = HttpResponse(dataset.csv, content_type='text/csv')
            response['Content-Disposition'] = 'attachment; filename="exported_data.csv"'
            return response
        elif file_format == 'XLS':
            response = HttpResponse(dataset.xls, content_type='application/xls')
            response['Content-Disposition'] = 'attachment; filename="exported_data.xls"'
            return response
    return redirect('Section')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-09 12:16:35

代码语言:javascript
复制
from tablib import Dataset
from .resources import FmCustomerSectionResource
def import_Section(request):
    if request.method == 'POST':
        file_format = request.POST['file-format']
        company = FmCustomerUsers.objects.filter(user=request.user.id)
        product = FmCustomerSection.objects.filter(
     fmCustomerID__company_name__in=company.values_list('fmCustomerID__company_name'))
        product_resource = FmCustomerSectionResource()
        dataset = product_resource .exclude(product)
        new_city = request.FILES['importData']

        if file_format == 'XLS':
            imported_data = dataset.load(new_city.read(), format='xls')
            result = product_resource.import_data(dataset, dry_run=True)

        elif file_format == 'CSV':
            imported_data = dataset.load(new_city.read(), format='csv')
            # Testing data import
            result = product_resource.import_data(dataset, dry_run=True)

        if not result.has_errors():
            # Import now
            product_resource.import_data(dataset, dry_run=False)

    return redirect('Section')

def export_Section(request):
    
    if request.method == 'POST':
        # Get selected option from form
        file_format = request.POST['importData']
        product_resource = FmCustomerSectionResource()
        dataset = product_resource.export()
        if file_format == 'CSV':
            response = HttpResponse(dataset.csv, content_type='text/csv')
            response['Content-Disposition'] = 'attachment; filename="exported_data.csv"'
            return response
        elif file_format == 'XLS':
            response = HttpResponse(dataset.xls, content_type='application/xls')
            response['Content-Disposition'] = 'attachment; filename="exported_data.xls"'
            return response
    return redirect('Section')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64346341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档