質問編集履歴

1

追加の質問

2020/06/20 12:13

投稿

ysda
ysda

スコア65

test CHANGED
File without changes
test CHANGED
@@ -67,3 +67,137 @@
67
67
  success_url = reverse_lazy('snake:index')
68
68
 
69
69
  ```
70
+
71
+
72
+
73
+ ### 【追記】追加ボタンを押した際にエラー
74
+
75
+ 更新ボタンを押すことで、1週間後の日付が表示されるようにはなったのですが、
76
+
77
+ 追加からペットの追加を行おうとすると、エラーが表示されてしまいます。
78
+
79
+ おそらく型の問題であるとは思うのですが、こちらの解決方法を調べても対策が検討つかなかったため、解決策をご教示いただけますと幸いです。
80
+
81
+ なお、そもそも追加画面では日付を表示・取得させたくはないと考えております。
82
+
83
+ pet_form.htmlという共通のファイルで入力しているため、現在追加画面にも日時が表示される状態になっております。
84
+
85
+ ![イメージ説明](8b85a465bc7888d9bfd88fd0cc89b253.png)
86
+
87
+
88
+
89
+ ### 該当のソースコード
90
+
91
+
92
+
93
+ models.py
94
+
95
+ ```ここに言語名を入力
96
+
97
+ class Pet(models.Model):
98
+
99
+ name = models.CharField('ペットの名前', max_length=20)
100
+
101
+ date = models.DateTimeField('日付', auto_now=True)
102
+
103
+ nextdate = models.DateTimeField('次回日付', default=timezone.now())
104
+
105
+
106
+
107
+ def save(self, *args, **kwargs):
108
+
109
+ self.nextdate = self.date + datetime.timedelta(weeks=1)
110
+
111
+ super().save(*args, **kwargs)
112
+
113
+ ```
114
+
115
+
116
+
117
+ forms.py
118
+
119
+ ```ここに言語を入力
120
+
121
+ class PetCreateForm(forms.ModelForm):
122
+
123
+ class Meta:
124
+
125
+ model = Pet
126
+
127
+ fields = '__all__'
128
+
129
+ ```
130
+
131
+
132
+
133
+ views.py
134
+
135
+ ```ここに言語を入力
136
+
137
+ #追加画面
138
+
139
+ class AddView(generic.CreateView):
140
+
141
+ model = Pet
142
+
143
+ form_class = PetCreateForm
144
+
145
+ success_url = reverse_lazy('snake:index')
146
+
147
+
148
+
149
+ #更新画面
150
+
151
+ class UpdateView(generic.UpdateView):
152
+
153
+ model = Pet
154
+
155
+ form_class = PetCreateForm
156
+
157
+ success_url = reverse_lazy('snake:index')
158
+
159
+ ```
160
+
161
+ pet_form.html
162
+
163
+ ```ここに言語を入力
164
+
165
+ {% extends 'snake/base.html' %}
166
+
167
+
168
+
169
+ {% block content %}
170
+
171
+ <form action="" method="POST">
172
+
173
+ <table class="table">
174
+
175
+ <tr>
176
+
177
+ <th>ペットの名前</th>
178
+
179
+ <td>{{form.name}}</td>
180
+
181
+ <th>最終給餌日時</th>
182
+
183
+ <td>{{form.date}}</td>
184
+
185
+ <th>次回給餌日時</th>
186
+
187
+ <td>{{form.nextdate}}</td>
188
+
189
+
190
+
191
+ </tr>
192
+
193
+ </table>
194
+
195
+ <button type="submit" class="btn btn-primary">送信</button>
196
+
197
+ {% csrf_token %}
198
+
199
+ </form>
200
+
201
+ {% endblock %}
202
+
203
+ ```