DjangoのModelFormsaveメソッドとModelインスタンスを直接保存することの違いを理解しようとしています。
個人的には、直接保存する方が直感的で、データが保存されるタイミングがより明確に示されます。さらに、保存する前にインスタンスを変更する必要がある場合は、Djangoのドキュメントで説明されているように、モデルの保存方法を使用する必要があります。
では、フォームが検証されたら、違いは何ですか?フォームが複数のモデルまたは他のより複雑なユースケースを使用した場合、違いはありますか?
それが重要な場合は、Djangoバージョン1.4を使用しています。以下は、検証済みのフォームデータを保存する方法を示すコードです。
前もって感謝します!
# models.py
class Project(models.Model):
project_name = models.CharField(unique=True, null=False, blank=False)
# views.py
def add_project(request):
if request.method == 'POST':
project = Project()
form = ProjectForm(request.POST, instance=project)
if form.is_valid():
project.save() ### <-- project.save() vs form.save() ###
return HttpResponseRedirect(reverse('view_project', args=(project.id,)))
else:
form = ProjectForm()
return render_to_response(
'add_project.html',
{
'form': form,
},
context_instance=RequestContext(request)
)
# forms.py
class ProjectForm(ModelForm):
class Meta:
model = Project