Jos*_*ies 7 python django django-models python-3.x
我是django和Python的新手,希望能够导出我的模型中的项目列表,即产品.我正在看这里的文档 - https://docs.djangoproject.com/en/dev/howto/outputting-csv/
我需要创建一个存储我想要的所有数据的变量.但不确定它在上面链接的代码片段中的位置.
道歉,因为这是一个非常无聊的问题,但真的会有任何帮助.
这是我的脚本到目前为止的代码:
import csv
from products.models import Product
from django.http import HttpResponse
def export_to_csv(request):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="mytest.csv"'
Run Code Online (Sandbox Code Playgroud)
Aid*_*wen 12
看看python csv模块.
您可能希望获得模型字段
def get_model_fields(model):
return model._meta.fields
Run Code Online (Sandbox Code Playgroud)
然后用
getattr(instance, field.name)
Run Code Online (Sandbox Code Playgroud)
获取字段值(如本问题所示).
然后你会想要类似的东西
with open('your.csv', 'wb') as csvfile:
writer = csv.writer(csvfile)
# write your header first
for obj in YourModel.objects.all():
row = ""
for field in fields:
row += getattr(obj, field.name) + ","
writer.writerow(row)
Run Code Online (Sandbox Code Playgroud)
它有点冗长(并且未经测试),但它应该给你一个想法.(哦,别忘了关闭你的档案)
Tom*_*dor 12
根据具体情况 - 您可能希望拥有模型的CSV.如果您可以访问Django Admin站点,则可以为显示为列表的任何模型插入一般操作(google:django admin actions)
http://djangosnippets.org/snippets/790/
如果您使用控制台(python manage.py ...)进行操作,则可以使用我刚才使用的脚本:
(将其放入:yourapp/management/commands/model2csv.py)
"""
Prints CSV of all fields of a model.
"""
from django.core.management.base import BaseCommand, CommandError
import csv
import sys
class Command(BaseCommand):
help = ("Output the specified model as CSV")
args = '[appname.ModelName]'
def handle(self, *app_labels, **options):
from django.db.models import get_model
app_name, model_name = app_labels[0].split('.')
model = get_model(app_name, model_name)
field_names = [f.name for f in model._meta.fields]
writer = csv.writer(sys.stdout, quoting=csv.QUOTE_ALL)
writer.writerow(field_names)
for instance in model.objects.all():
writer.writerow([unicode(getattr(instance, f)).encode('utf-8') for f in field_names])
Run Code Online (Sandbox Code Playgroud)
这没有捕获任何异常等,但作为管理员,你不会导致它们被提出,对吧?
使用它像:
./manage.py model2csv my_ecommerce.Product > products.csv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17095 次 |
| 最近记录: |