質問編集履歴
1
参考URL追加、code追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
参考ページ
|
1
|
+
参考ページ⇒https://narito.ninja/blog/detail/126/
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -8,7 +8,23 @@
|
|
8
8
|
|
9
9
|
やりたいこと:
|
10
10
|
|
11
|
-
|
11
|
+
下記コードだと、各日に予定を入力する新規フォームが設置されていますが、予定を保存すると更に新規フォームが追加されます。
|
12
|
+
|
13
|
+
予定未保存⇒新規フォームのみ 予定保存済⇒新規フォーム、更新フォーム
|
14
|
+
|
15
|
+
って感じです。
|
16
|
+
|
17
|
+
予定未保存⇒新規フォームのみ 予定保存済⇒更新フォーム
|
18
|
+
|
19
|
+
と変更したいのですが、どうすればいいのか分かりません。
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
説明下手ですいません。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
12
28
|
|
13
29
|
下記画像
|
14
30
|
|
@@ -16,9 +32,7 @@
|
|
16
32
|
|
17
33
|
![イメージ説明](4472281421e842f1b603eca0af3b0126.jpeg)
|
18
34
|
|
19
|
-
|
35
|
+
|
20
|
-
|
21
|
-
フォームが表示されていてもそれが更新フォームであれば良いのですが、、、。
|
22
36
|
|
23
37
|
```
|
24
38
|
|
@@ -194,7 +208,167 @@
|
|
194
208
|
|
195
209
|
```
|
196
210
|
|
211
|
+
```
|
212
|
+
|
213
|
+
models.py
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
SUB_START = (
|
218
|
+
|
219
|
+
('0', '✕'),
|
220
|
+
|
221
|
+
('1', '14'),
|
222
|
+
|
223
|
+
('2', '16'),
|
224
|
+
|
225
|
+
('3', '17'),
|
226
|
+
|
227
|
+
('4', '17.5'),
|
228
|
+
|
229
|
+
('5', '18'),
|
230
|
+
|
231
|
+
('6', '18.5'),
|
232
|
+
|
233
|
+
('7', '19'),
|
234
|
+
|
235
|
+
('8', '19.5'),
|
236
|
+
|
237
|
+
('9', '20'),
|
238
|
+
|
239
|
+
('10', '〇'),
|
240
|
+
|
241
|
+
)
|
242
|
+
|
243
|
+
SUB_END = (
|
244
|
+
|
245
|
+
('0', '✕'),
|
246
|
+
|
247
|
+
('1', '22'),
|
248
|
+
|
249
|
+
('2', '23'),
|
250
|
+
|
251
|
+
('3', '〇'),
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
)
|
256
|
+
|
257
|
+
class Schedule(models.Model):
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
"""スケジュール"""
|
262
|
+
|
263
|
+
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='ユーザー', on_delete=models.SET_NULL, blank=True, null=True)
|
264
|
+
|
265
|
+
start_time = models.CharField('開始時間', choices= SUB_START, max_length=50,blank=True,default="0")
|
266
|
+
|
267
|
+
end_time = models.CharField('終了時間', choices= SUB_END, max_length=50,blank=True,default="0")
|
268
|
+
|
269
|
+
date = models.DateField('日付')
|
270
|
+
|
271
|
+
# created_at = models.DateTimeField('作成日', default=timezone.now)
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
def __int__(self):
|
276
|
+
|
277
|
+
return self.date
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
```
|
284
|
+
|
285
|
+
```
|
286
|
+
|
287
|
+
forms.py
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
from django import forms
|
292
|
+
|
293
|
+
from .models import Schedule
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
class BS4ScheduleForm(forms.ModelForm):
|
300
|
+
|
301
|
+
"""Bootstrapに対応するためのModelForm"""
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
class Meta:
|
306
|
+
|
307
|
+
model = Schedule
|
308
|
+
|
309
|
+
fields = ('start_time', 'end_time')
|
310
|
+
|
311
|
+
widgets = {
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
'start_time': forms.TextInput(attrs={
|
316
|
+
|
317
|
+
'class': 'form-control',
|
318
|
+
|
319
|
+
}),
|
320
|
+
|
321
|
+
'end_time': forms.TextInput(attrs={
|
322
|
+
|
323
|
+
'class': 'form-control',
|
324
|
+
|
325
|
+
}),
|
326
|
+
|
327
|
+
}
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
def clean_end_time(self):
|
332
|
+
|
333
|
+
start_time = self.cleaned_data['start_time']
|
334
|
+
|
335
|
+
end_time = self.cleaned_data['end_time']
|
336
|
+
|
337
|
+
if end_time <= start_time:
|
338
|
+
|
339
|
+
raise forms.ValidationError(
|
340
|
+
|
341
|
+
'終了時間は、開始時間よりも後にしてください'
|
342
|
+
|
343
|
+
)
|
344
|
+
|
345
|
+
return end_time
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
class SimpleScheduleForm(forms.ModelForm):
|
352
|
+
|
353
|
+
"""シンプルなスケジュール登録用フォーム"""
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
class Meta:
|
358
|
+
|
359
|
+
model = Schedule
|
360
|
+
|
361
|
+
fields = ('start_time', 'end_time', 'date')
|
362
|
+
|
363
|
+
|
364
|
+
|
365
|
+
'date': forms.HiddenInput,
|
366
|
+
|
367
|
+
}
|
368
|
+
|
369
|
+
```
|
370
|
+
|
197
|
-
code
|
371
|
+
code内のコメントは参考ページ内でのコメントです。
|
198
372
|
|
199
373
|
|
200
374
|
|