2017-04-12 22 views
0

から__str__メソッドを「無視」しながら、インポートする方法: - これは単なる基本的なコードであることに注意してください - admin.pyでジャンゴ・輸出入 - 私は、次のモデル持っているモデル

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 

私のコードを実行し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) 

インポートしよう - 管理者を使用して - 私は、コードモデルの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コードを使用してジャンゴ・輸出入のサンプルコードで行われているが、私はそれは私に私のケースを動作させることができなかったようだ。

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

任意のヘルプまたは私は意志を逃したことをどこかの例感謝する。

ありがとうございました

答えて

0

2つのモデルフィールドは+を使用して連結されていました。ちょうどDjango docsで概説された方法に従った。

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

問題が解決しました。レッスンはおそらく学習したレッスンについて考える必要があるかもしれません。

関連する問題