2
django-import-export的文檔在如何將管理員配置爲從電子表格導入方面有點弱。有沒有人有一個完整的例子?如何使用Django導入導出導入數據?
django-import-export的文檔在如何將管理員配置爲從電子表格導入方面有點弱。有沒有人有一個完整的例子?如何使用Django導入導出導入數據?
下面介紹如何做到這一點,假設電子表格中的列名是Title
和Field one
。此示例假定模型實例將在每次導入時重新創建(而不是通過主鍵進行更新)。
from django.contrib import admin
from import_export.admin import ImportMixin
from import_export import resources, fields
from .models import MyModel
class MyModelResource(resources.ModelResource):
title = fields.Field(attribute='title',
column_name='Title')
field_one = fields.Field(attribute='field_one',
column_name='Field one')
def get_instance(self, instance_loader, row):
# Returning False prevents us from looking in the
# database for rows that already exist
return False
class Meta:
model = MyModel
fields = ('title', 'field_one')
export_order = fields
class MyModelAdmin(ImportMixin, admin.ModelAdmin):
resource_class = MyModelResource
admin.site.register(MyModel, MyModelAdmin)
這不是一個完整的模塊。但你可以理解它應該如何。
resources.py文件
from import_export import resources
from .models import edxUser
class edxUserResource(resources.ModelResource):
class Meta:
model = edxUser
#skip_unchanged = True
#report_skipped = True
#if you want to exclude any field from exporting
exclude = ('id','edx_anonymized_id')
fields = ('id', 'edx_id', 'edx_anonymized_id', 'edx_email', 'edx_name', 'time_created', 'created_by')
#Order of the export fields
export_order = ('edx_id', 'edx_email')
admin.py文件
from import_export.admin import ImportExportModelAdmin
from django.contrib import admin
from .models import edxUser
from resources import edxUserResource
@admin.register(edxUser)
class edxUserAdmin(ImportExportModelAdmin):
resource_class = edxUserResource
models.py文件
from __future__ import unicode_literals
from django.conf import settings
from django.db import models
class edxUser(models.Model):
edx_id = models.IntegerField('edX user id', blank=True, null=True)
edx_anonymized_id = models.IntegerField("edX anonymized user id", blank=True, null=True)
edx_email = models.EmailField('edx user email', max_length=75, blank=True)
edx_name = models.CharField('edx name', max_length=75, blank=True, null=True)
time_created = models.DateField('Created time', blank=True, null=True)
created_by = models.OneToOneField(settings.AUTH_USER_MODEL, null=True, blank=True)
def __unicode__(self):
return str(self.edx_id)
我更新的行。但不使用主鍵。我有另一個字段unique = True。我如何根據該字段提供數據?現在我得到錯誤'id'是必需的。 –
這是另一個問題,但對於那些可以找到它的人:http://django-import-export.readthedocs.io/en/latest/getting_started.html?highlight=import_id_fields#customize-resource-options –