Python “非类型”对象没有属性(外键)csv?
当所有设置外键sku_id时,如果外键为空,则工作正常,显示错误 对象没有属性 如何在CSV列中打印“无”而不是错误Python “非类型”对象没有属性(外键)csv?,python,django,csv,Python,Django,Csv,当所有设置外键sku_id时,如果外键为空,则工作正常,显示错误 对象没有属性 如何在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')
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')
您应该能够使用values_list来选择数据库中的所有值,而对于无法遍历的关系,则不会获得任何值
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)
你能分享回溯和你的模型吗?您有obj.sku\u id.seller\u id.seller\u name之类的内容-您的外键定义为sku还是sku\u id?sku\u id=models.ForeignKeyProducts,on\u delete=models.SET\u NULL,NULL=True,blank=true如果obj.sku\u id在代码中的其他“None”应该起作用,请用附加信息obj.sku\u id.seller\u id.seller\u name编辑问题。通常外键没有在名称后面附加“\u id”。Django将在名为“\u id”的类上创建一个列和一个属性。在您的情况下,您将有一个列和一个名为“sku\u id\u id”的属性,它工作正常,但我希望sku\u id为null,如果“sku\u id\u seller\u id\u seller\u name”为none,则应在字符串中打印“none”