[Django]ModelFormを使う

ModelFormを使うことでよりスムーズにレコードの保存を行うことができる

/hello/forms.py

from django import forms
from.models import Friend

class FriendForm(forms.ModelForm):
	class Meta:
		model = Friend
		fields = ['name','mail','gender','age','birthday']

/hello/views.py

def create(request):
	if(request.method == 'POST'):
		obj = Friend()
		friend = FriendForm(request.POST, instance=obj)
		friend.save()
		return redirect(to='/hello')
	params = {
		'title': 'Hello',
		'form': HelloForm(),
	}
	return render(request, 'hello/create.html', params)

– obj = Friend()でインスタンスを作成し、FriendForm(request.POST, instance=obj)インスタンスを作成する

/hello/templates/hello/create.html

<body class="container">
	<h1 class="display-4 text-primary">{{title}}</h1>
	<form action="{% url 'create' %}" method="post">
		{% csrf_token %}
		<table class="table">
		{{ form.as_table }}
		<tr>
			<td></td>
			<td><input type="submit" value="click" class="btn btn-primary mt-2"></td>
		</tr>
	</table>
	</form>
</body>

先が長いな。