这已被问过几次 - 但没有一个解决方案适合我.
下面的代码有效(因为没有错误),但它没有看到任何将新数据导入外键类的内容.只有在外键中已存在数据时才会导入数据.
那有意义吗?
Models.py(片段)
...
class Store(models.Model):
store_name = models.CharField(max_length=30)
def __unicode__(self):
return self.store_name
#etc
class Product(models.Model):
Store = models.ForeignKey(Store)
Category = models.ForeignKey(Category)
first_name = models.CharField(max_length=30)
second_name = models.CharField(max_length=30)
...
Run Code Online (Sandbox Code Playgroud)
Admin.py
admin.site.register(Category)
admin.site.register(Store)
class ProductResource(resources.ModelResource):
store_name = fields.Field(column_name='store_name', attribute='Store',
widget=ForeignKeyWidget(Store, 'store_name'))
def __unicode__(self):
return self.store_name.name
class Meta:
model = Product
fields = ('id', 'first_name', 'second_name','store_name')
export_order = ('id', 'second_name', 'first_name')
skip_unchanged = False
report_skipped = False
widgets = {
'published': {'format': '%d.%m.%Y'},
}
class …Run Code Online (Sandbox Code Playgroud) 在 Django-1.9.6 上,django-import-export-0.5
当我尝试上传没有“id”字段的 CSV 时会引发此错误。
Line number: 1 - u'id'
13173474, Harry McDade, 10.harry.asas@asasasas.com
Traceback (most recent call last):
File "/Users/isanka/dev/venv/edxubase/lib/python2.7/site-packages/import_export/resources.py", line 434, in import_row
instance, new = self.get_or_init_instance(instance_loader, row)
File "/Users/isanka/dev/venv/edxubase/lib/python2.7/site-packages/import_export/resources.py", line 258, in get_or_init_instance
instance = self.get_instance(instance_loader, row)
File "/Users/isanka/dev/venv/edxubase/lib/python2.7/site-packages/import_export/resources.py", line 252, in get_instance
return instance_loader.get_instance(row)
File "/Users/isanka/dev/venv/edxubase/lib/python2.7/site-packages/import_export/instance_loaders.py", line 31, in get_instance
field = self.resource.fields[key]
KeyError: u'id'
Run Code Online (Sandbox Code Playgroud) I am using django-import-export 1.0.1 with admin integration in Django 2.1.1. I have two models
\n\nfrom django.db import models\n\nclass Sector(models.Model):\n code = models.CharField(max_length=30, primary_key=True)\n\nclass Location(models.Model):\n code = models.CharField(max_length=30, primary_key=True)\n sector = ForeignKey(Sector, on_delete=models.CASCADE, related_name=\'locations\')\nRun Code Online (Sandbox Code Playgroud)\n\n并且可以使用模型资源很好地导入/导出它们
\n\nfrom import_export import resources\nfrom import_export.fields import Field\nfrom import_export.widgets import ForeignKeyWidget\n\nclass SectorResource(resources.ModelResource):\n code = Field(attribute=\'code\', column_name=\'Sector\')\n class Meta:\n model = Sector\n import_id_fields = (\'code\',)\n\nclass LocationResource(resources.ModelResource):\n code = Field(attribute=\'code\', column_name=\'Location\')\n sector = Field(attribute=\'sector\', column_name=\'Sector\',\n widget=ForeignKeyWidget(Sector, \'code\'))\n class Meta:\n model = Location\n import_id_fields = (\'code\',)\n …Run Code Online (Sandbox Code Playgroud) python django django-forms django-admin django-import-export
我正在使用 django 导入导出并将ImportExportModelAdmin数据从文件导入到管理界面的数据库中。
以下是我使用的模型资源:
class ImportedBetResource(resources.ModelResource):
date = fields.Field(column_name='Date',
attribute='date',
widget=DateWidget(format="%d/%m/%Y"))
time = fields.Field(column_name='Time',
attribute='time',
widget=TimeWidget(format="%H:%M"))
sport = fields.Field(column_name='Sport',
attribute='sport',
widget=ForeignKeyWidget(Sport, 'name'))
country = fields.Field(column_name='Country',
attribute='country',
widget=ForeignKeyWidget(Country, 'name'))
bookie = fields.Field(column_name='Bookie',
attribute='bookie',
widget=ForeignKeyWidget(Bookie, 'name'))
currency = fields.Field(column_name='Currency',
attribute='stake_currency',
widget=ForeignKeyWidget(Currency, 'name'))
odds = fields.Field(column_name="Odds",
attribute="odds",
widget=DecimalWidget())
status = fields.Field(column_name='Status',
attribute='status',
widget=ForeignKeyWidget(Status, 'name'))
class Meta:
model = Bet
fields = ("id", "date", "time", "sport",
"country",
"competition", "home",
"visitor",
"bookie", "bet", "stake",
"currency",
"odds", "status")
clean_model_instances = True
@classmethod
def field_from_django_field(self, …Run Code Online (Sandbox Code Playgroud) 您好,我在 django 导入导出方面遇到问题,
Django==1.8
django-import-export==1.1.0
Run Code Online (Sandbox Code Playgroud)
当我想导入一个小 csv(1 行)时,我直接有一个带有消息的空白页
尝试读取文件时遇到错误:XXX.csv
我在网络控制台中看到一个 POST 到http://localhost:8001/admin/XXX/XXX/import/ 并带有此消息的 200 响应。
无论模型如何,行为都是相同的。
我在尝试让导入导出适用于 mptt 模型时遇到问题。这是我的代码:
模型.py
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
class MyModel(MPTTModel):
name = models.CharField(max_length=255)
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
active = models.BooleanField(default=True,null=False,blank=False)
sort_order = models.PositiveIntegerField(default=0,null=True,blank=True)
class MPTTMeta:
order_insertion_by = ['name']
class Meta:
ordering = ['sort_order']
def __str__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
管理员.py
from django.contrib import admin
from mptt.admin import MPTTModelAdmin, DraggableMPTTAdmin
from .models import MyModel
from import_export import resources
from import_export.admin import ImportExportModelAdmin, ImportExportMixin
class MyModelResource(resources.ModelResource):
class Meta:
model = MyModel
exclude = ('lft','rght','tree_id','level')
@admin.register(MyModel)
class …Run Code Online (Sandbox Code Playgroud) 我有一个关于 django-import-export 的简短问题。在我的模型中,我有选择列表:
STATE_CHOICES = ((NEW_STATE, u'New'),
(DELIVERED_STATE, u'Delivered'),
(LOST_STATE, u'Lost'),
Run Code Online (Sandbox Code Playgroud)
以及处理名称映射选择的方法
@staticmethod
def get_status_name_by_status(status):
return next((s[1] for s in MyModel.STATE_CHOICES if s[0] == status), 'Uknown')
Run Code Online (Sandbox Code Playgroud)
我想导入/导出一些数据
class MyModelResource(resources.ModelResource):
status = fields.Field(column_name='status', attribute='order',
widget=ForeignKeyWidget(Order, 'status'))
Run Code Online (Sandbox Code Playgroud)
我想使用我的 get_status_name_by_status 方法,以便将选择转换为名称。但是这里不能使用方法,只允许使用字段。任何提示如何做到这一点?
我有一个magento2项目。我想将magento 2中的产品目录导入django oscarcommerce。官方文档解释了进口商(http://django-oscar.readthedocs.io/en/releases-1.1/howto/importing_a_catalogue.html)。但是他们不支持,因为它有故障。我试图弄清楚它是如何工作的。但是我找不到要测试的源csv文件。
是否有将magento2中的数据转换为奥斯卡商业的模块/脚本?我检查了此线程,但对此一无所知。