我使用django import-export和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, field_name, django_field, readonly):
"""
Returns a Resource Field instance for the given Django model field.
"""
FieldWidget = self.widget_from_django_field(django_field)
widget_kwargs = self.widget_kwargs_for_field(field_name)
field = fields.Field(attribute=field_name, column_name=field_name.replace("__name", "").title(),
widget=FieldWidget(**widget_kwargs), readonly=readonly)
return field
这是来自documentation的导入视图的屏幕截图:
您可以看到文本“This importer will import the following fields”后跟字段名。在
在我的例子中,显式定义的字段首先出现,例如:
^{pr2}$以及class Meta fields
中定义的其余字段:
This importer will import the following fields: Date, Time, Sport, Country, Bookie, Currency, Odds, Status, Id, Competition, Home, Visitor, Bet, Stake
问题是字段的顺序与我文件中字段的顺序不符,并且数据被置乱。在
只有在文件中有错误时才会发生这种情况。在
出口订单就是答案!在
将export_order选项添加到资源的Meta字段中,如下所示: 在
(或以您希望的任何首选顺序)和django import export将相应地导入您声明的字段!这样做的原因是,export_order是由get_fields()调用的,而get_import_fields()又被get_export_fields()调用,影响两个进程的整个工作流。在
^{pr2}$以上是import_export.resources.py的节选。为了进一步澄清,我还推荐import数据工作流documentation和import{a3}的方法。在
我希望这能有所帮助!在
相关问题 更多 >
编程相关推荐