Объект 'NoneType' не имеет атрибута (внешнего ключа) csv? - PullRequest
0 голосов
/ 23 декабря 2019

Когда все установленные внешние ключи (sku_id) работают нормально, если нулевой внешний ключ показывает, что объект ошибки не имеет атрибута

Как напечатать 'none' вместо ошибки в столбцах CSV

def seller_report(request):
    loginned_user = request.user
    if request.method=="POST":
        from_date = request.POST.get('from_date')
        to_date = request.POST.get('to_date')
        new_from = datetime.datetime.strptime(from_date, '%Y-%m-%d').date()
        new_to = datetime.datetime.strptime(to_date, '%Y-%m-%d').date()
        min_dt = datetime.datetime.combine(new_from, datetime.time.min)
        max_dt = datetime.datetime.combine(new_to, datetime.time.max)
        space = ' '
        to = 'to'
        download_name = space + from_date + space + to + space + to_date

        daily_en = All_enquiries.objects.filter(enquired_at__range = (min_dt, max_dt))

        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] =  'attachment; filename="Report{}.csv"'.format(download_name)

        writer =  csv.writer(response, delimiter=',')
        writer.writerow(['created_at','product_name','product_category','price','seller_name','seller_mobile','seller state','seller city','seller pincode', 'seller type','customer_name','customer_mobile','state','district','city','pincode','status','remarks','source','username'])

        for obj in daily_en:
            if obj.sku_id is None:
               obj.sku_id is 'None'

            writer.writerow([obj.enquired_at,obj.product_name,obj.product_category,obj.price,obj.sku_id.seller_id.seller_name, obj.sku_id.seller_id.mobile_number,obj.sku_id.seller_id.state,obj.sku_id.seller_id.city,obj.sku_id.seller_id.pincode,obj.sku_id.seller_id.get_seller_type_display(), obj.customer_name,obj.customer_mobile,obj.state,obj.district,obj.city,obj.pincode,obj.status,obj.remarks,obj.get_source_display(),obj.user_id])

        return response

    return render (request,'enquiries/admin/report.html')

1 Ответ

0 голосов
/ 23 декабря 2019

Вы должны быть в состоянии использовать values_list, чтобы выбрать все значения из БД, получая None для отношений, которые не могут быть пройдены

    for row in daily_en.values_list(
        'enquired_at',
        'product_name',
        'product_category',
        'price',
        'sku_id__seller_id__seller_name',
        'sku_id__seller_id__mobile_number',
        'sku_id__seller_id__state',
        'sku_id__seller_id__city',
        'sku_id__seller_id__pincode',
        'sku_id__seller_id__seller_type',
        'customer_name',
        'customer_mobile',
        'state',
        'district',
        'city',
        'pincode',
        'status',
        'remarks',
        'source',
        'user_id'
    ):
        writer.writerow(row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...