0
私はフォームをListViewに実装しています。このフォームは既存のアイテムの編集に使用されます。私はフォームを送信しようとすると、しかし、私は、キーのエラーが表示されます。 File "C:\Users\John\Desktop\website\app\views.py", line 124, in form_valid id = self.kwargs['id'] KeyError: 'id' [14/Dec/2016 21:42:09] "POST /car/ HTTP/1.1" 500 99346
Djangoフォーム - キーエラー
これがメインのコードです:
class CarListFormView(FormView):
form_class = CarListForm
def form_valid(self, form):
id = self.kwargs['id']
obj = Car.objects.get(pk=id)
form = CarListForm(instance=obj)
car = form.save(commit=False)
if self.request.user.is_staff:
car.agency = Agency.objects.get(agency_id=9000)
else:
car.agency = self.request.user.agency
car.save()
return redirect('car_list')
このキーエラーの原因は何?
ありがとうございます!
私の 'kwargs'に' id'を追加するにはどうしたらいいですか?既存のオブジェクトを編集し、新しいオブジェクトを追加しないようにフォームを使用しているので、提案したように単純化することはできません。私は私の質問でそれを指定しないことをお詫びします。 – Wessi
'UpdateView':' from django.views.generic import UpdateView'を使用することをお勧めします。このビューは、モデルを編集しており、新しいモデルを作成しないことを認識しています。 – Brobin
私はこれを反映するために私の答えを更新しました – Brobin