質問編集履歴

4

質問内容変更

2018/08/02 08:25

投稿

isshi
isshi

スコア11

test CHANGED
@@ -1 +1 @@
1
- formsetを利用したデータの複数登録について
1
+ formsetを利用したデータの一括削除について
test CHANGED
@@ -1,14 +1,20 @@
1
+ Django初心者です。
2
+
1
- djangoのformsetを利用してタの複数登録を試みています。
3
+ Djangoのformsetを利用してレコドを複数登録後、
2
-
4
+
3
- ~~登録画面までは表示できたのですが、実際の登録処理がまくせん~~
5
+ 同様にformsetを利用して一括削除しよとしていま
6
+
4
-
7
+ formsetに追加した削除チェックボックスにチェック後、submitしても削除される事なくエラー表示されず指定画面に遷移する状態です。
5
-
6
-
8
+
9
+
10
+
7
- 登録画面表示時にモデルに登録されているデータが全て表示されるのですが、
11
+ ~~登録画面表示時にモデルに登録されているデータが全て表示されるのですが、
8
-
12
+
9
- これを表示させない、または特定条件のデータのみ表示させるにはどうしたら良いでしょうか。
13
+ これを表示させない、または特定条件のデータのみ表示させるにはどうしたら良いでしょうか。~~
14
+
15
+
16
+
10
-
17
+ 削除処理をする上でどこが誤っているのかわからない状態です。
11
-
12
18
 
13
19
  どうぞご教授のほどよろしくお願いします。
14
20
 
@@ -66,22 +72,6 @@
66
72
 
67
73
 
68
74
 
69
- # updated_at = models.DateTimeField()
70
-
71
-
72
-
73
- # def save(self, *args, **kwargs):
74
-
75
- # auto_now = kwargs.pop('updated_at_auto_now', True)
76
-
77
- # if auto_now:
78
-
79
- # self.updated_at = datetime.now()
80
-
81
- # super(Book, self).save(*args, **kwargs)
82
-
83
-
84
-
85
75
  def __str__(self):
86
76
 
87
77
  return self.name
@@ -100,8 +90,6 @@
100
90
 
101
91
 
102
92
 
103
-
104
-
105
93
  class BookCreateForm(forms.ModelForm):
106
94
 
107
95
  """書籍のフォーム"""
@@ -124,13 +112,9 @@
124
112
 
125
113
 
126
114
 
127
-
128
-
129
115
  BookFormSet = forms.modelformset_factory(
130
116
 
131
- Book, form=BookCreateForm, extra=3, can_delete=True
117
+ Book, form=BookCreateForm, extra=0, can_delete=True)
132
-
133
- )
134
118
 
135
119
  ```
136
120
 
@@ -210,69 +194,33 @@
210
194
 
211
195
 
212
196
 
213
- """書籍追加"""
197
+
214
-
215
- @method_decorator(login_required, name='dispatch')
198
+
216
-
217
- class AddView(generic.CreateView):
199
+ class multiEditView(generic.FormView):
218
-
219
- model = Book
200
+
220
-
221
- template_name = 'book_add.html'
201
+ template_name = 'book_multiEdit.html'
222
-
202
+
223
- form_class = BookCreateForm
203
+ form_class = BookFormSet
224
-
204
+
225
- success_url = reverse_lazy('bookmgr:index') # /bookmgr/
205
+ success_url = reverse_lazy('bookmgr:index')
206
+
207
+
208
+
209
+ def get_form(self, form_class=None):
210
+
211
+ return BookFormSet(self.request.POST or None)
226
212
 
227
213
 
228
214
 
229
215
  def form_valid(self, form):
230
216
 
231
- ''' バリデーションを通った時 '''
217
+ for fm in form:
232
-
218
+
233
- book = form.save(commit=False)
219
+ book = fm.save(commit=False)
234
-
235
- # book.editer = request.user.id
220
+
236
-
237
- form.instance.editer = str(self.request.user)
221
+ book.editer = str(self.request.user)
238
-
222
+
239
- book.save()
223
+ book.save()
240
-
241
- # 追加のとき
242
-
243
- if 'save' in self.request.POST:
244
-
245
- messages.success(self.request, "追加しました")
246
-
247
- return redirect('bookmgr:index')
248
-
249
-
250
-
251
- def form_invalid(self, form):
252
-
253
- ''' バリデーションに失敗した時 '''
254
-
255
- messages.warning(self.request, "追加できませんでした")
256
-
257
- return super().form_invalid(form)
258
-
259
-
260
-
261
-
262
-
263
- class multiAddView(generic.FormView):
264
-
265
- template_name = 'book_multiAdd.html'
266
-
267
- form_class = BookFormSet
268
-
269
- success_url = reverse_lazy('bookmgr:index')
270
-
271
-
272
-
273
- def form_valid(self, form):
274
-
275
- form.save() # ここで保存される
276
224
 
277
225
  return super().form_valid(form)
278
226
 
@@ -280,7 +228,7 @@
280
228
 
281
229
 
282
230
 
283
- # book_multiAdd.html
231
+ # book_multiEdit.html
284
232
 
285
233
  ```
286
234
 
@@ -326,10 +274,16 @@
326
274
 
327
275
  {{ fm.id }}
328
276
 
277
+ {{ fm.errors }}
278
+
329
279
  <table class="table">
330
280
 
331
281
  <tr>
332
282
 
283
+ <th>書籍タイプ</th>
284
+
285
+ <td>{{ fm.bookType }}</td>
286
+
333
287
  <th>書籍名</th>
334
288
 
335
289
  <td>{{ fm.name }}</td>
@@ -354,9 +308,7 @@
354
308
 
355
309
  </table>
356
310
 
357
- {% endfor %}
311
+ {% endfor %}
358
-
359
-
360
312
 
361
313
  <button type="submit" class="btn btn-primary">送信</button>
362
314
 

3

質問内容更新

2018/08/02 08:25

投稿

isshi
isshi

スコア11

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,10 @@
1
1
  djangoのformsetを利用してデータの複数登録を試みています。
2
2
 
3
- 登録画面までは表示できたのですが、実際の登録処理がうまくいきません。
3
+ ~~登録画面までは表示できたのですが、実際の登録処理がうまくいきません。~~
4
-
5
-
6
-
4
+
5
+
6
+
7
- また登録画面表示時にモデルに登録されているデータが全て表示されるのですが、
7
+ 登録画面表示時にモデルに登録されているデータが全て表示されるのですが、
8
8
 
9
9
  これを表示させない、または特定条件のデータのみ表示させるにはどうしたら良いでしょうか。
10
10
 

2

補足追加

2018/08/02 03:19

投稿

isshi
isshi

スコア11

test CHANGED
File without changes
test CHANGED
@@ -413,3 +413,9 @@
413
413
 
414
414
 
415
415
  ```
416
+
417
+ ### その他、補足情報
418
+
419
+ ・Django:2.0.7
420
+
421
+ ・Python:3.6.5

1

内容変更

2018/08/01 02:47

投稿

isshi
isshi

スコア11

test CHANGED
File without changes
test CHANGED
@@ -400,17 +400,11 @@
400
400
 
401
401
 
402
402
 
403
- path('update/<int:pk>/', views.UpdateView.as_view(), name='book_update'), # 編集
404
-
405
- path('delete/<int:pk>/', views.DeleteView.as_view(), name='book_delete'), # 削除
406
-
407
403
  # ログアウト
408
404
 
409
405
  path('accounts/logout/', auth_views.LogoutView.as_view(), name='logout'),
410
406
 
411
- # IP
407
+
412
-
413
- path('ip/',views.ip,name='ip'),
414
408
 
415
409
 
416
410