Есть две модели
models.pyfrom django.db import models
class Person(models.Model):
name = models.CharField()
class Phone(models.Model):
person = models.ForeignKey(Person)
number = models.CharField()
От них две формы
forms.pyfrom django import forms
from myapp.models import Person, Phone
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ('name')
class PhoneForm(forms.ModelForm):
class Meta:
model = Phone
fields = ('number')
Вьюшка
views.pyfrom django.shortcuts import render, HttpResponseRedirect
from myapp.forms import PersomForm, PhomeForm
def new_person(request):
if request.method == "POST":
person_form = PersonForm(request.POST or None)
phone_form = PhoneForm(request.POST or None)
if person_form.is_valid() and phone_form.is_valid():
person_f = person_form.save(commit=False)
person_f.author = request.user
phone_f = phone_form.save(commit=False)
???
phone_form.save()
person_form.save()
person_form.save_m2m()
return HttpResponseRedirect('/person/new/')
else:
person_form = PersonForm()
phone_form = PhoneForm()
context = {
'person_form': person_form,
'phone_form': phone_form,
}
return render(request, 'form.html', context)
И шаблон
form.html<form method="post" action="" class="form-horizontal">
{% csrf_token %}
{{ person_form }}
{{ phone_form }}
<input type="submit" value="Создать" />
</form>
На что получаю ошибку
The above exception (ОШИБКА: нулевое значение в столбце "person_id" нарушает ограничение NOT NULL DETAIL: Ошибочная строка содержит (1, +7(900)123-45-67, null). ) was the direct cause of the following exception:
Собственно вопрос. Я понимаю в чем ошибка, я не могу получить
person_id
. Потому у меня во вьюшке и стоят вопросительные знаки там, где должно быть получение его самого. Если не делать
phone_f = phone_form.save(commit=False)
, а сразу сохранять - всё равно такая же ошибка.
ЧЯДНТ?