JSのデータをFormに入れたいです。
index.htmlには
{% load staticfiles %} <html lang="ja"> <head> <meta charset="utf-8"> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script> </head> <body> <main> <form class="form-horizontal" action="/accounts/regist_save/" method="POST"> <label for="id_email">Email</label> {{ regist_form.email }} {% include 'registration/sex.html' %} <button type="submit" class="regist">REGIST</button> <input name="next" type="hidden"/> {% csrf_token %} </form> </main> </body> </html>
と書き、forms.pyには
from django import forms from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.forms import AuthenticationForm from .models import User from .models import NewUser class RegisterForm(UserCreationForm): class Meta: model = User fields = ('email',) def __init__(self, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.fields['email'].widget.attrs['class'] = 'form-control' class ProfileForm(forms.ModelForm): class Meta: model = NewUser fields = ( "sex" )
と書き、
models.pyには
#coding:utf-8 from django.db import models from django.contrib.auth.models import User class NewUser(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) sex = models.CharField(max_length=100,null=True, blank=True, default=None)
と書き、
sex.htmlには
<form class="form-horizontal" method="post" action="#"> <div class="form-group-lg"> <label for="sex">SEX</label> <select class="form-control sex" name="sex"> <option value="">--</option> <option value="male">MAN</option> <option value="female">FEMALE</option> </select> </div> </form> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script> function showSex() { var num = document.forms[0].sex.selectedIndex; var sex = document.forms[0].sex.options[num].value; console.log(sex); } document.addEventListener("DOMContentLoaded", showSex); for (var i = 0, e = document.querySelectorAll(".form-horizontal select"); i < e.length; i++) { e[i].addEventListener("change", showSex); } </script>
と書きました。
今index.htmlのREGISTボタンが押せません。sex.htmlで選択したvalue(maleもしくはfemale)が
var sex
で取得できますが、それをmodels.pyの
sex = models.CharField(max_length=100,null=True, blank=True, default=None)
に入れたいです。今JSを使ってvalueの値を取得するところまではできていますが、その値をPythonのProfileFormを経由してモデルのsexカラムに入れる方法がわかりません。そもそもそれは可能なのでしょうか?どのように書けば、何を使えばそれが実現できますか?
回答2件
あなたの回答
tips
プレビュー