Django-Import-Export - 如何导入同时"忽略"来自Model的__str__方法

时间:2017-04-12 15:22:20

标签: django-models django-admin django-import-export

我有以下型号:

class Code(models.Model):
   project = models.ForeignKey(Project, on_delete=models.CASCADE)
   code = models.CharField(max_length=3)
   variant = models.CharField(max_length=1)

   class Meta:
      unique_together = ('project', 'code', 'variant',)

   def __str__(self):
      return self.code + self.variant

我在admin.py中的代码 - 请注意,这只是基本代码 - 不使用ModelResource - 我尝试使用ModelResource方法来处理"处理"模型中的str方法尚未成功。

from django.contrib import admin
from import_export.admin import ImportMixin

class CodeAdmin(ImportMixin, admin.ModelAdmin):
    list_display = ('Code', 'Variant')

admin.site.register(Code, CodeAdmin)

尝试导入时 - 使用admin - 由于代码模型中的 str 方法,我收到以下错误。

    Line number: 1 - unsupported operand type(s) for +: 'int' and 'str' 
None, 1, 700, a
Traceback (most recent call last):
 File "C:\Python34\lib\site-packages\import_export\resources.py", line 464, in import_row
 row_result.object_repr = force_text(instance)
 File "C:\Python34\lib\site-packages\django\utils\encoding.py", line 76, in force_text
 s = six.text_type(s)
 File "C:\GitHub\WebApps\sidProject\sidApp\models.py", line 58, in __str__
 return self.Code + self.Variant
TypeError: unsupported operand type(s) for +: 'int' and 'str'

我的问题 - 我如何"忽略"在这种情况下, str 。似乎是使用下面的ModelResource代码在django-import-export示例代码中完成的,但我不能让它工作我的情况:

def for_delete(self, row, instance):
    return self.fields['name'].clean(row) == ''

任何我错过的帮助或示例都将受到赞赏。

谢谢

1 个答案:

答案 0 :(得分:0)

2个模型字段刚刚使用+连接。只需遵循Django docs中列出的方法。

return '%s%s' % (self.Code_code, self.Variant)

问题解决了!经验教训甚至可能 - 不得不考虑所学到的教训。