【发布时间】:2012-05-14 09:45:48
【问题描述】:
我有一个“导出为 CSV”按钮,可以导出所有车型。当我将所有汽车导出为 CSV 时,“功能”(例如 AM/FM 收音机、月顶、皮革内饰、蓝牙、GPS 等)列显示如下:
[<Feature: GPS>, <Feature: Leather>]
我如何摆脱所有其他东西,只拥有“GPS,皮革”?
型号
class Features(models.Model):
name = models.CharField(max_length=20)
def __unicode__(self):
return self.name
class Car(models.Model):
model_name = models.CharField(max_length=20)
features = models.ManyToManyField(features)
def __unicode__(self):
return self.model_name
VIEW.PY
def query(request):
results = Car.objects.all()
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment;filename="car_export.csv"'
writer = csv.writer(response)
writer.writerow(['Model Name', 'Features'])
for x in results:
writer.writerow([x.model_name, x.role.all()])
return response
回答:
型号:
class Features(models.Model):
name = models.CharField(max_length=20)
def __unicode__(self):
return self.name
class Car(models.Model):
model_name = models.CharField(max_length=20)
features = models.ManyToManyField(features)
def __unicode__(self):
return self.model_name
观看次数:
def query(request):
results = Car.objects.all()
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment;filename="car_export.csv"'
writer = csv.writer(response)
writer.writerow(['Model Name', 'Features'])
for x in results:
writer.writerow([x.model_name, ', '.join([x.name for x in x.role.all()]),])
return response
【问题讨论】:
-
该调用返回一个
QuerySet,这与您的results查询集完全相同。您如何从<Car: Nissan Xterra>获得model_name? x.model_name。同样的事情也适用于您的Features QuerySet -
抱歉,django/python 新手,我不完全理解您的评论..
标签: django csv many-to-many export export-to-csv