标签: django-import-export

django-import-export:如何使用没有键但有名称的外键导入数据?

我正在尝试设置 django-import-export 来处理存储在电子表格中的数据。电子表格不包含作为 ID 的外键,而是包含相关对象的(也是唯一的)名称。在我的数据库中,我将有一个外键关系Teachers谁在工作Schools分别位于Cities

想象这是模型(摘录):

class School(models.Model):
    city = models.ForeignKey(City)
    name = models.CharField(max_length=200)


class Teacher(models.Model):
    school = models.ForeignKey(School)
    name = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

教师的电子表格可能如下所示:

school,name
Central Grammar School,John Smith
West Primary,Jane Doe
West Primary,John Doe
...,...
Run Code Online (Sandbox Code Playgroud)

如何构建SchoolResource模型,以便在导入过程中接受名称而不是 ID?

(我不能只从数据库中获取 ID,因为在某一时刻,这个想法是从头开始只使用电子表格数据启动数据库,其中不包含任何 ID。)

python django foreign-keys relationships django-import-export

4
推荐指数
1
解决办法
3384
查看次数

Heroku上的django-import-export出现Tmpfile错误

我正在使用django-import-export来处理上传到我的Django管理站点的CSV文件.

当我在本地机器上运行Django时,一切正常.

当我将我的应用程序部署到Heroku时,我开始收到与tmpfile访问相关的错误:

Feb 24 14:35:12 test-staging app/web.3:  ERROR 2017-02-24 22:35:12,143 base 14 139687073408832 Internal Server Error: 
....
Feb 24 14:35:12 test-staging app/web.3:    File "/app/.heroku/python/lib/python2.7/site-packages/import_export/admin.py", line 163, in process_import 
Feb 24 14:35:12 test-staging app/web.3:      data = tmp_storage.read(input_format.get_read_mode()) 
Feb 24 14:35:12 test-staging app/web.3:    File "/app/.heroku/python/lib/python2.7/site-packages/import_export/tmp_storages.py", line 42, in read 
Feb 24 14:35:12 test-staging app/web.3:      with self.open(mode=mode) as file: 
Feb 24 14:35:12 test-staging app/web.3:    File "/app/.heroku/python/lib/python2.7/site-packages/import_export/tmp_storages.py", line 31, in open 
Feb 24 14:35:12 test-staging app/web.3:      return open(self.get_full_path(), mode) 
Feb 24 …
Run Code Online (Sandbox Code Playgroud)

python django heroku django-import-export

4
推荐指数
1
解决办法
428
查看次数

如何在 ModelResource django-import-export 中获取请求

如何从 django-import-export 中 ModelResource 的方法查询集中获取 request.user?

class PeopleResource(ModelResource):
    class Meta:
       model = People
       exclude = ('id','agent', 'public_id', 'active')

    def dehydrate_placeA(self, people):
        ...
        ...

    def get_queryset(self):
        query = People.objects.filter( ..... request.user )
        return query
Run Code Online (Sandbox Code Playgroud)

python django python-3.x django-import-export

4
推荐指数
2
解决办法
2833
查看次数

Django-import-export - 从模型函数导出?

对于Django模型,我使用的是django-import-export包.

手册说我可以导出目标模型中不存在的字段,如下所示:

from import_export import fields

class BookResource(resources.ModelResource):
    myfield = fields.Field(column_name='myfield')

    class Meta:
        model = Book
Run Code Online (Sandbox Code Playgroud)

http://django-import-export.readthedocs.org/en/latest/getting_started.html

如何从模型中导出函数输出?例如Book.firstword()

django django-admin django-import-export

3
推荐指数
1
解决办法
1848
查看次数

使用django-import-export进行django迁移的外键

我正在使用django-import-export在迁移文件中加载csv文件,据我了解,这是Django 1.7加载初始数据的当前最佳做法。这对于第一个文件效果很好:

class Country(models.Model):

    ISO2 = models.CharField(max_length=2, primary_key=True)
    name = models.CharField(max_length=50, unique=True)
Run Code Online (Sandbox Code Playgroud)

以及整个迁移文件的内容。请注意,ISO2是主键,因此需要添加行import_id_fields = ['ISO2']。针对以下问题的答案改编了代码:使用Django 1.7加载初始数据和数据迁移

from django.conf import settings
import tablib
from import_export import resources
from web.models import Country
import os
import csv

# load initial data - assume it is all in web/fixtures directory

class CountryResource(resources.ModelResource):

    class Meta:
         model = Country
         import_id_fields = ['ISO2']

fixture_dir = os.path.abspath(os.path.join(settings.PROJECT_ROOT, 'web/fixtures'))
fixture_filename = 'web_country.csv'

def load_fixture(apps, schema_editor):
    fixture_file = os.path.join(fixture_dir, fixture_filename)

    with open(fixture_file, 'r') as content_file:
        content …
Run Code Online (Sandbox Code Playgroud)

django django-import-export

3
推荐指数
1
解决办法
1508
查看次数

Django进出口:只出口

我正在使用第三方库Django-import-export导入/导出数据.

它工作正常,但我只想要导出功能(不导入功能).

我怎么能只使用导出而不导入

django django-import-export

3
推荐指数
2
解决办法
2361
查看次数

Django 导入导出排除不起作用

我一直在使用 Django 导入导出,以便可以从数据库中获取 csv 文件。这些 csv 文件有一些不相关的字段,因为当项目放入数据库时​​它们会发生更改,因此我不希望它们出现在表中。

我已遵循导入导出的文档,但似乎无法正确排除这些字段。在我的 admin.py 文件中,我有:

from import_export import resources
from import_export.admin import ImportExportModelAdmin

class ArtAdmin(ImportExportModelAdmin):
    list_display = ['id', 'name', 'category', 'type', 'agent', 'authenticate', ]
    search_fields = ('name', 'category', 'artist', 'id', 'authenticate', )
    list_filter = ["authenticate"]
    actions = [approve_art, reject_art]

class ArtResource(resources.ModelResource):

    class Meta:
        model = Art
        exclude = ('authenticate', )
Run Code Online (Sandbox Code Playgroud)

当我进入 python manage.py shell 并让它打印出 csv 时,这就是我所期望的,但是当我使用 python manage.py runserver 然后导出它时,我仍然会看到身份验证列,有人知道吗如何解决这个问题?

django python-2.7 django-import-export

3
推荐指数
1
解决办法
3665
查看次数

如何使用 django-import-export 导出属性值

我的型号:

class TreeNode(MPTTModel):
    ...
    @property
    def pay_progress(self):
        return "{}/{}".format(self.annuities.exclude(fact_date=None).aggregate(Sum('total'))['total__sum'] or 0,
                             self.annuities.aggregate(Sum('total'))['total__sum'])
Run Code Online (Sandbox Code Playgroud)

资源:

from import_export import resources
from models import TreeNode


class TreeNodeResource(resources.ModelResource):
    class Meta:
        model = TreeNode
Run Code Online (Sandbox Code Playgroud)

看法:

def export_treenode_csv(request):
    treenode_resource = TreeNodeResource()
    dataset = treenode_resource.export()
    response = HttpResponse(dataset.xls, content_type='application/vnd.ms-excel')
    response['Content-Disposition'] = 'attachment; filename="TreeNode.xls"'

    return response
Run Code Online (Sandbox Code Playgroud)

但是此代码仅导出存储在数据库中的字段。如何将pay_progress属性值添加到导出的报告中?

python django django-import-export

3
推荐指数
1
解决办法
1773
查看次数

Django-import-export before_import_row 自动创建对象,如果它不存在

我在使用 Django-import-export 时面临当前问题:

在我的 admin.py 中:

class QuestionResource(resources.ModelResource):
category = fields.Field(
        column_name='category',
        attribute='category',
        widget=ForeignKeyWidget(Category, 'category')
    )

class Meta:
    model = Question
    fields = ['id', 'question', 'category', 'answer',]
    # exclude = ('created', 'modified', 'verified', 'count', 'user_created')

# PREVIOUS THINGS I TRIED: 

# def _post_import(model, **kwargs):
#   query = self.fields['category']
#   category = Question.objects.get_or_create(category=query)
#   return category

# def before_import(self, dataset, dry_run, *args, **kwargs):
#   query = self.fields['category']
#   for q in query:
#       Category.objects.get_or_create(category=q)

# def before_import_row(row, *args, **kwargs):
#   category …
Run Code Online (Sandbox Code Playgroud)

python django excel django-import-export

3
推荐指数
1
解决办法
2923
查看次数

Django 导入导出外键

我正在尝试按照 Django 导入导出库(外键小部件)的指南使用外键导入数据。但我收到以下错误,我尝试添加带有标题名称 id 的附加列,但仍然收到相同的错误。

Errors

    Line number: 1 - 'id'
    None, 46, 19, LSD

    Traceback (most recent call last):
    File "/var/www/vfsc-env/lib/python3.6/site-packages/import_export/resources.py", line 635, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
    File "/var/www/vfsc-env/lib/python3.6/site-packages/import_export/resources.py", line 330, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
    File "/var/www/vfsc-env/lib/python3.6/site-packages/import_export/resources.py", line 318, in get_instance
    self.fields[f] for f in self.get_import_id_fields()
    File "/var/www/vfsc-env/lib/python3.6/site-packages/import_export/resources.py", line 318, in <listcomp>
    self.fields[f] for f in self.get_import_id_fields()
    KeyError: 'id'
Run Code Online (Sandbox Code Playgroud)

这就是我所做的。

class Clockin_Users(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    userid …
Run Code Online (Sandbox Code Playgroud)

django django-import-export

2
推荐指数
1
解决办法
2605
查看次数