ユーザーの詳細情報の入力欄を作っており、入力した情報をユーザーに紐づけて保存させたいです。
入力するユーザーと入力されるユーザーは別のユーザーです。
各ユーザーのpkを飛ばしてhtmlで表示するところまでは出来たのですが、ユーザーの入力フォームが空になってしまい保存できません。
htmlではuser.as_hiddenで非表示にしているのですが、
viewsで
user=User.objects.filter(id=user_pk) context={'user':user}
のような記載ではダメなのでしょうか?
ユーザーが空でvalidが通りません。
アドバイスお願いします。
models.py class Fixed_shift(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='ユーザー', on_delete=models.CASCADE,related_name = "user_fix") fix = models.CharField(choices=choice,max_length=5,blank=True,default=0) monday_start= models.CharField(max_length=10,blank=True,default=0) tuesday_start= models.CharField(max_length=10,blank=True,default=0) wednesday_start= models.CharField(max_length=10,blank=True,default=0) thursday_start= models.CharField(max_length=10,blank=True,default=0) friday_start= models.CharField(max_length=10,blank=True,default=0) saturday_start= models.CharField(max_length=10,blank=True,default=0) sunday_start= models.CharField(max_length=10,blank=True,default=0) monday_end= models.CharField(max_length=10,blank=True,default=0) tuesday_end= models.CharField(max_length=10,blank=True,default=0) wednesday_end= models.CharField(max_length=10,blank=True,default=0) thursday_end= models.CharField(max_length=10,blank=True,default=0) friday_end= models.CharField(max_length=10,blank=True,default=0) saturday_end= models.CharField(max_length=10,blank=True,default=0) sunday_end= models.CharField(max_length=10,blank=True,default=0)
forms.py class FixedForm(forms.ModelForm): class Meta: model = Fixed_shift fields=('fix','user', 'monday_start','tuesday_start','wednesday_start','thursday_start','friday_start','saturday_start','sunday_start', 'monday_end','tuesday_end','wednesday_end','thursday_end','friday_end','saturday_end','sunday_end' ) wifgets={ 'user':forms.HiddenInput, }
views.py class FixViews(generic.CreateView): """フォーム付きの月間カレンダーを表示するビュー""" template_name = 'shift/fix.html' model = Fixed_shift form_class = FixedForm def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) user = self.kwargs['user_pk'] user = User.objects.filter(id=user) context['user'] = user[0] return context def post(self, request, **kwargs): user = self.kwargs['user_pk'] user=User.objects.filter(id=user) fix_form = FixedForm(request.POST or None) if request.method == "POST" and fix_form.is_valid(): fixed_shift = fix_form.save(commit=False) user.fixed_shift=fixed_shift user.save() print(user.fixed_shift.fix) return redirect('register:user_list') context = { "FixedForm":fix_form } return render(request, self.template_name, context)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/21 06:52
2020/08/21 11:09 編集
2020/08/21 16:59
2020/08/21 17:01
2020/08/21 21:35
2020/08/23 07:50