kenken-python.com
このページの一番最後を見ているのですが、関数ベースのviewしかのってなくて、クラスベースで作りたいのですがうまくいきません。
そのページにあったコード↓
django
1 2from django.shortcuts import render,redirect,get_object_or_404 3from .models import CheckBox 4from .forms import CheckBoxCreateForm 5 6# Create your views here. 7 8 9def update(request, pk): 10 req = request.POST.copy() 11 checkbox = get_object_or_404(CheckBox, pk=pk) 12 13 checkbox_1 = request.POST.getlist('checkbox_1') 14 checkbox_2 = request.POST.getlist('checkbox_2') 15 checkbox_3 = request.POST.getlist('checkbox_3') 16 17 if checkbox_1: 18 req.update({'checkbox_1':'checked'}) 19 else: 20 req.update({'checkbox_1':'unchecked'}) 21 22 if checkbox_2: 23 req.update({'checkbox_2':'checked'}) 24 else: 25 req.update({'checkbox_2':'unchecked'}) 26 27 if checkbox_3: 28 req.update({'checkbox_3':'checked'}) 29 else: 30 req.update({'checkbox_3':'unchecked'}) 31 32 33 form = CheckBoxCreateForm(req or None, instance=checkbox) 34 35 if request.method == "POST" and form.is_valid: 36 form.save() 37 return redirect('checkbox:index') 38 39 context = { 40 'form' : form, 41 'checkbox':checkbox, 42 } 43 44 return render(request, 'checkbox/form.html',context)
これをどうやってクラスベースに直せば良いか分かりません
僕が書いているコード↓
django
1class word_update(LoginRequiredMixin, UpdateView): 2 template_name = 'practice/word_update.html' 3 model = Word 4 form_class = WordUpdateForm 5 6 def get_success_url(self): 7 return reverse('word_list', kwargs={'sub': self.kwargs.get('sub'), 'team': self.kwargs.get('team')}) 8 9 def get_context_data(self, **kwargs): 10 context = super().get_context_data(**kwargs) 11 context['user'] = self.request.user 12 context['sub'] = self.kwargs.get('sub') 13 context['team'] = self.kwargs.get('team') 14 return context 15 16 def post(self, request, *args, **kwargs): 17 req = self.request.POST.copy() 18 if self.request.POST.get('check'): 19 req.update({'checkbox': 'checked'}) 20 print('ok') 21 else: 22 req.update({'checkbox': 'unchecked'}) 23 print('no') 24 return self.get(request, *args, **kwargs) 25 26 def form_valid(self, form): 27 Word = form.save(commit=False) 28 Word.team = Team.objects.get(pk=self.kwargs.get('team')) 29 Word.save() 30 return super().form_valid(form) 31 32URLのパラメーターも使っていますが気にしないでください
他に必要な情報があれば言ってください。
あなたの回答
tips
プレビュー