質問編集履歴
4
質問内容変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
formsetを利用したデータの
|
1
|
+
formsetを利用したデータの一括削除について
|
test
CHANGED
@@ -1,14 +1,20 @@
|
|
1
|
+
Django初心者です。
|
2
|
+
|
1
|
-
|
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=
|
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
|
-
|
198
|
+
|
216
|
-
|
217
|
-
class
|
199
|
+
class multiEditView(generic.FormView):
|
218
|
-
|
219
|
-
|
200
|
+
|
220
|
-
|
221
|
-
template_name = 'book_
|
201
|
+
template_name = 'book_multiEdit.html'
|
222
|
-
|
202
|
+
|
223
|
-
form_class = Book
|
203
|
+
form_class = BookFormSet
|
224
|
-
|
204
|
+
|
225
|
-
success_url = reverse_lazy('bookmgr:index')
|
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 = f
|
219
|
+
book = fm.save(commit=False)
|
234
|
-
|
235
|
-
|
220
|
+
|
236
|
-
|
237
|
-
|
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_multi
|
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
|
-
|
311
|
+
{% endfor %}
|
358
|
-
|
359
|
-
|
360
312
|
|
361
313
|
<button type="submit" class="btn btn-primary">送信</button>
|
362
314
|
|
3
質問内容更新
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
補足追加
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
内容変更
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
|
-
|
407
|
+
|
412
|
-
|
413
|
-
path('ip/',views.ip,name='ip'),
|
414
408
|
|
415
409
|
|
416
410
|
|