Python Django导入-导入高级字段?
对于Django模型,我使用包 如果需要导出比仅可用的模型字段更多的字段,如属性或自定义字段,则可以使用Python Django导入-导入高级字段?,python,django,django-models,satchmo,django-import-export,Python,Django,Django Models,Satchmo,Django Import Export,对于Django模型,我使用包 如果需要导出比仅可用的模型字段更多的字段,如属性或自定义字段,则可以使用import\u export.fields.Field类和可选的脱水方法添加新字段 from import_export import resources, fields, instance_loaders class ProductResource(resources.ModelResource): categories = fields.Field() price
import\u export.fields.Field
类和可选的脱水方法添加新字段
from import_export import resources, fields, instance_loaders
class ProductResource(resources.ModelResource):
categories = fields.Field()
price = fields.Field(attribute='unit_price')
class Meta:
model = Product
def dehydrate_categories(self, product):
return ';'.join(
'/%s' % '/'.join([c.name for c in cat.parents()] + [cat.name])
for cat in product.category.iterator() )
它确实工作得很好,但只适用于出口。那进口呢,反向过程呢?是否有类似的脱水方法
到目前为止,我已经重写了get\u或\u init\u实例
方法:
class ProductResource(resources.ModelResource):
def get_or_init_instance(self, instance_loader, row):
row['unit_price'] = row['price']; row.pop('price')
return super(ProductResource, self).get_or_init_instance(instance_loader, row)
但我怀疑这是正确的方法
如果您能提供任何有关如何处理自定义字段导入的提示,我们将不胜感激。您可以替代import\u obj
。有关更多详细信息,请参阅
另一种方法是对导出
和保存
方法进行子类化和重写,并在字段中执行所有必需的数据操作。我知道这很老,但我遇到了相同的问题,我就是这样解决的(基于原始asker的标题方向)。
首先,您可以通过覆盖“before\u import\u row”函数添加所需的任何自定义/修改字段,如下所示:
导入前定义行(self,row,**kwargs):
行['extra_info']='Some info'
返回超级(RetailLocationResource,self)。导入前\u行(行,**kwargs)
然后,您可以通过覆盖get_或_init_实例将其传递到实例中,如下所示:
def get_或_init_实例(self,instance_loader,row):
实例,bool=super(RetailLocationResource,self)。获取或初始化实例(实例加载程序,行)
instance.extra\u info=行['extra\u info']
返回实例,bool
希望这对任何人都有帮助 谢谢。当然,重写字段方法是一个好主意,但我只是想知道是否已经有某种方法可以导入以前使用
deterhemate\uu
方法导出的自定义字段内容。我不喜欢重新发明轮子。我问了类似的问题,也许你可以帮助你的django进出口经验?