質問編集履歴
4
質問内容変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
formsetを利用したデータの
|
1
|
+
formsetを利用したデータの一括削除について
|
body
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
+
Django初心者です。
|
1
|
-
|
2
|
+
Djangoのformsetを利用してレコードを複数登録後、
|
2
|
-
|
3
|
+
同様にformsetを利用して一括削除しようとしています。
|
4
|
+
formsetに追加した削除チェックボックスにチェック後、submitしても削除される事なくエラー表示されず指定画面に遷移する状態です。
|
3
5
|
|
4
|
-
登録画面表示時にモデルに登録されているデータが全て表示されるのですが、
|
6
|
+
~~登録画面表示時にモデルに登録されているデータが全て表示されるのですが、
|
5
|
-
これを表示させない、または特定条件のデータのみ表示させるにはどうしたら良いでしょうか。
|
7
|
+
これを表示させない、または特定条件のデータのみ表示させるにはどうしたら良いでしょうか。~~
|
6
8
|
|
9
|
+
削除処理をする上でどこが誤っているのかわからない状態です。
|
7
10
|
どうぞご教授のほどよろしくお願いします。
|
8
11
|
|
9
12
|
# models.py
|
@@ -32,14 +35,6 @@
|
|
32
35
|
created_at = models.DateTimeField('登録日時', default=datetime.now)
|
33
36
|
updated_at = models.DateTimeField('更新日時', auto_now=True, blank=True, null=True) # 更新日時
|
34
37
|
|
35
|
-
# updated_at = models.DateTimeField()
|
36
|
-
|
37
|
-
# def save(self, *args, **kwargs):
|
38
|
-
# auto_now = kwargs.pop('updated_at_auto_now', True)
|
39
|
-
# if auto_now:
|
40
|
-
# self.updated_at = datetime.now()
|
41
|
-
# super(Book, self).save(*args, **kwargs)
|
42
|
-
|
43
38
|
def __str__(self):
|
44
39
|
return self.name
|
45
40
|
```
|
@@ -49,7 +44,6 @@
|
|
49
44
|
from django import forms
|
50
45
|
from .models import Book,Impression
|
51
46
|
|
52
|
-
|
53
47
|
class BookCreateForm(forms.ModelForm):
|
54
48
|
"""書籍のフォーム"""
|
55
49
|
def __init__(self, *args, **kwargs):
|
@@ -61,10 +55,8 @@
|
|
61
55
|
model = Book
|
62
56
|
fields = ('bookType', 'name', 'publisher', 'page', 'impressionCount',)
|
63
57
|
|
64
|
-
|
65
58
|
BookFormSet = forms.modelformset_factory(
|
66
|
-
Book, form=BookCreateForm, extra=
|
59
|
+
Book, form=BookCreateForm, extra=0, can_delete=True)
|
67
|
-
)
|
68
60
|
```
|
69
61
|
|
70
62
|
# views.py
|
@@ -104,42 +96,24 @@
|
|
104
96
|
)
|
105
97
|
return queryset
|
106
98
|
|
107
|
-
"""書籍追加"""
|
108
|
-
@method_decorator(login_required, name='dispatch')
|
109
|
-
class AddView(generic.CreateView):
|
110
|
-
model = Book
|
111
|
-
template_name = 'book_add.html'
|
112
|
-
form_class = BookCreateForm
|
113
|
-
success_url = reverse_lazy('bookmgr:index') # /bookmgr/
|
114
99
|
|
115
|
-
def form_valid(self, form):
|
116
|
-
''' バリデーションを通った時 '''
|
117
|
-
book = form.save(commit=False)
|
118
|
-
# book.editer = request.user.id
|
119
|
-
form.instance.editer = str(self.request.user)
|
120
|
-
book.save()
|
121
|
-
# 追加のとき
|
122
|
-
if 'save' in self.request.POST:
|
123
|
-
messages.success(self.request, "追加しました")
|
124
|
-
return redirect('bookmgr:index')
|
125
|
-
|
126
|
-
def form_invalid(self, form):
|
127
|
-
''' バリデーションに失敗した時 '''
|
128
|
-
messages.warning(self.request, "追加できませんでした")
|
129
|
-
return super().form_invalid(form)
|
130
|
-
|
131
|
-
|
132
|
-
class
|
100
|
+
class multiEditView(generic.FormView):
|
133
|
-
template_name = '
|
101
|
+
template_name = 'book_multiEdit.html'
|
134
102
|
form_class = BookFormSet
|
135
103
|
success_url = reverse_lazy('bookmgr:index')
|
136
104
|
|
105
|
+
def get_form(self, form_class=None):
|
106
|
+
return BookFormSet(self.request.POST or None)
|
107
|
+
|
137
108
|
def form_valid(self, form):
|
109
|
+
for fm in form:
|
138
|
-
|
110
|
+
book = fm.save(commit=False)
|
111
|
+
book.editer = str(self.request.user)
|
112
|
+
book.save()
|
139
113
|
return super().form_valid(form)
|
140
114
|
```
|
141
115
|
|
142
|
-
#
|
116
|
+
# book_multiEdit.html
|
143
117
|
```
|
144
118
|
{% block title %}一括登録{% endblock title %}
|
145
119
|
|
@@ -162,8 +136,11 @@
|
|
162
136
|
{{ form.management_form }}
|
163
137
|
{% for fm in form %}
|
164
138
|
{{ fm.id }}
|
139
|
+
{{ fm.errors }}
|
165
140
|
<table class="table">
|
166
141
|
<tr>
|
142
|
+
<th>書籍タイプ</th>
|
143
|
+
<td>{{ fm.bookType }}</td>
|
167
144
|
<th>書籍名</th>
|
168
145
|
<td>{{ fm.name }}</td>
|
169
146
|
<th>出版社</th>
|
@@ -176,8 +153,7 @@
|
|
176
153
|
{% endif %}
|
177
154
|
</tr>
|
178
155
|
</table>
|
179
|
-
|
156
|
+
{% endfor %}
|
180
|
-
|
181
157
|
<button type="submit" class="btn btn-primary">送信</button>
|
182
158
|
<a href="{% url 'bookmgr:index' %}" class="btn btn-primary btn-sm">戻る</a>
|
183
159
|
{% csrf_token %}
|
3
質問内容更新
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
djangoのformsetを利用してデータの複数登録を試みています。
|
2
|
-
登録画面までは表示できたのですが、実際の登録処理がうまくいきません。
|
2
|
+
~~登録画面までは表示できたのですが、実際の登録処理がうまくいきません。~~
|
3
3
|
|
4
|
-
|
4
|
+
登録画面表示時にモデルに登録されているデータが全て表示されるのですが、
|
5
5
|
これを表示させない、または特定条件のデータのみ表示させるにはどうしたら良いでしょうか。
|
6
6
|
|
7
7
|
どうぞご教授のほどよろしくお願いします。
|
2
補足追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -205,4 +205,7 @@
|
|
205
205
|
|
206
206
|
]
|
207
207
|
|
208
|
-
```
|
208
|
+
```
|
209
|
+
### その他、補足情報
|
210
|
+
・Django:2.0.7
|
211
|
+
・Python:3.6.5
|
1
内容変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -199,13 +199,10 @@
|
|
199
199
|
path('add/', views.AddView.as_view(), name='book_add'), # 追加
|
200
200
|
path('multiadd/', views.multiAddView.as_view(), name='book_multiadd'),
|
201
201
|
|
202
|
-
path('update/<int:pk>/', views.UpdateView.as_view(), name='book_update'), # 編集
|
203
|
-
path('delete/<int:pk>/', views.DeleteView.as_view(), name='book_delete'), # 削除
|
204
202
|
# ログアウト
|
205
203
|
path('accounts/logout/', auth_views.LogoutView.as_view(), name='logout'),
|
206
|
-
# IP
|
207
|
-
path('ip/',views.ip,name='ip'),
|
208
204
|
|
205
|
+
|
209
206
|
]
|
210
207
|
|
211
208
|
```
|