回答編集履歴

1

解決したため追記します

2019/03/04 01:58

投稿

pakapaka_alpaca
pakapaka_alpaca

スコア10

test CHANGED
@@ -1 +1,105 @@
1
1
  指摘を受け、まだ質問段階にないことを理解したため、クローズいたします。
2
+
3
+
4
+
5
+ 2019/3/4:
6
+
7
+ まだまだここに書けるようなレベルではないかもしれませんが、解決しましたので追記します。
8
+
9
+ csv出力する際にShift_JISで出力する必要があったため
10
+
11
+ 出力時にunicodecsvを利用しておりましたが、
12
+
13
+ 入力でも同ライブラリを利用していためダメだったようです。
14
+
15
+ (unicodecsv単体でも同様のエラーが発生しましたので
16
+
17
+  デコードする必要のない値をデコードしようとしていたのでしょうか。)
18
+
19
+
20
+
21
+ csv出力にunicodecsv
22
+
23
+ csvからの入力にcsvを利用することで解決しました。
24
+
25
+
26
+
27
+ ```Python
28
+
29
+ ■views.py
30
+
31
+
32
+
33
+ import csv
34
+
35
+ import unicodecsv
36
+
37
+ from django.http import HttpResponse
38
+
39
+ from django.urls import reverse_lazy
40
+
41
+ from .forms import CSVUploadForm
42
+
43
+ from .models import Item
44
+
45
+
46
+
47
+ ・出力
48
+
49
+ def export(request):
50
+
51
+ response = HttpResponse(content_type='text/csv')
52
+
53
+ response['Content-Disposition'] = 'attachment; filename="alldata.csv"'
54
+
55
+ writer = unicodecsv.writer(response, encoding='cp932')
56
+
57
+ for item in Item.objects.all():
58
+
59
+ writer.writerow([書きだすアイテムたち])
60
+
61
+ return response
62
+
63
+
64
+
65
+ ・入力
66
+
67
+ class ItemImport(generic.FormView):
68
+
69
+ """
70
+
71
+ データの登録(csvアップロード)
72
+
73
+ """
74
+
75
+ template_name = 'app/item_import.html'
76
+
77
+ success_url = reverse_lazy('index')
78
+
79
+ form_class = CSVUploadForm
80
+
81
+
82
+
83
+ def form_valid(self, form):
84
+
85
+ csvfile = io.TextIOWrapper(form.cleaned_data['file'], encoding="cp932")
86
+
87
+ #encoding='cp932'
88
+
89
+ reader = csv.reader(csvfile)
90
+
91
+ for row in reader:
92
+
93
+ item, created = Item.objects.get_or_create(pk=row[0])
94
+
95
+        [入力するアイテムたちと場所の指定]
96
+
97
+ item.save()
98
+
99
+ return super().form_valid(form)
100
+
101
+ ```
102
+
103
+
104
+
105
+ この場を借りてアドバイスをいただけたwwbQzhMkhhgEmhU様に御礼を申し上げます。