2015-09-09 96 views

回答

1

下面介紹如何做到這一點,假設電子表格中的列名是TitleField 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) 
+1

我更新的行。但不使用主鍵。我有另一個字段unique = True。我如何根據該字段提供數據?現在我得到錯誤'id'是必需的。 –

+0

這是另一個問題,但對於那些可以找到它的人:http://django-import-export.readthedocs.io/en/latest/getting_started.html?highlight=import_id_fields#customize-resource-options –

0

這不是一個完整的模塊。但你可以理解它應該如何。

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)