teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

追加の質問

2020/06/20 12:13

投稿

ysda
ysda

スコア65

title CHANGED
File without changes
body CHANGED
@@ -32,4 +32,71 @@
32
32
  model = Pet
33
33
  form_class = PetCreateForm
34
34
  success_url = reverse_lazy('snake:index')
35
+ ```
36
+
37
+ ### 【追記】追加ボタンを押した際にエラー
38
+ 更新ボタンを押すことで、1週間後の日付が表示されるようにはなったのですが、
39
+ 追加からペットの追加を行おうとすると、エラーが表示されてしまいます。
40
+ おそらく型の問題であるとは思うのですが、こちらの解決方法を調べても対策が検討つかなかったため、解決策をご教示いただけますと幸いです。
41
+ なお、そもそも追加画面では日付を表示・取得させたくはないと考えております。
42
+ pet_form.htmlという共通のファイルで入力しているため、現在追加画面にも日時が表示される状態になっております。
43
+ ![イメージ説明](8b85a465bc7888d9bfd88fd0cc89b253.png)
44
+
45
+ ### 該当のソースコード
46
+
47
+ models.py
48
+ ```ここに言語名を入力
49
+ class Pet(models.Model):
50
+ name = models.CharField('ペットの名前', max_length=20)
51
+ date = models.DateTimeField('日付', auto_now=True)
52
+ nextdate = models.DateTimeField('次回日付', default=timezone.now())
53
+
54
+ def save(self, *args, **kwargs):
55
+ self.nextdate = self.date + datetime.timedelta(weeks=1)
56
+ super().save(*args, **kwargs)
57
+ ```
58
+
59
+ forms.py
60
+ ```ここに言語を入力
61
+ class PetCreateForm(forms.ModelForm):
62
+ class Meta:
63
+ model = Pet
64
+ fields = '__all__'
65
+ ```
66
+
67
+ views.py
68
+ ```ここに言語を入力
69
+ #追加画面
70
+ class AddView(generic.CreateView):
71
+ model = Pet
72
+ form_class = PetCreateForm
73
+ success_url = reverse_lazy('snake:index')
74
+
75
+ #更新画面
76
+ class UpdateView(generic.UpdateView):
77
+ model = Pet
78
+ form_class = PetCreateForm
79
+ success_url = reverse_lazy('snake:index')
80
+ ```
81
+ pet_form.html
82
+ ```ここに言語を入力
83
+ {% extends 'snake/base.html' %}
84
+
85
+ {% block content %}
86
+ <form action="" method="POST">
87
+ <table class="table">
88
+ <tr>
89
+ <th>ペットの名前</th>
90
+ <td>{{form.name}}</td>
91
+ <th>最終給餌日時</th>
92
+ <td>{{form.date}}</td>
93
+ <th>次回給餌日時</th>
94
+ <td>{{form.nextdate}}</td>
95
+
96
+ </tr>
97
+ </table>
98
+ <button type="submit" class="btn btn-primary">送信</button>
99
+ {% csrf_token %}
100
+ </form>
101
+ {% endblock %}
35
102
  ```