私は、すべての車種をエクスポートする「CSVにエクスポート」ボタンがあります。私はCSVにすべての車をエクスポートすると、次のように「機能」(例えば、AM/FMラジオ、ムーンルーフ、レザーインテリア、ブルートゥース、GPSなど。)列が表示されます。DJANGO:多対多フィールドを含むモデルでCSVを出力するには?
[<Feature: GPS>, <Feature: Leather>]
はどうやって取り除きますか他のすべてのものの、そしてちょうど "GPS、レザー"を持っていますか?
MODEL
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
ANSWER:
MODELS:
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
VIEWS:
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
? x.model_name。あなたの 'Features QuerySet'にも全く同じことが当てはまります –
django/pythonの初心者です。 – thedeepfield