Я создал проект с Django и пытаюсь писать из форм в БД.
Модельный класс имеет два класса:
class Contact(models.Model):
name = models.CharField(max_length=200)
birth_day = models.DateTimeField()
address = models.CharField(max_length=200)
class PhoneNumber(models.Model):
PHONETYPE_CHOICES = (
(0, 'Home'),
(1, 'Work'),
(2, 'Fax'),
(3, 'Mobile'),
(4, 'Other'),
)
contact = models.ForeignKey(Contact)
phone_type = models.CharField(max_length=255, choices=PHONETYPE_CHOICES)
phonenumber = models.CharField(max_length=30)
Теперь, если я хочу написать об этом с помощью форм, и я использую только:
Имя
День рождения
Адрес
Тип номера
Номер телефона
как поля формы.
Я получаю:
IntegrityError x_phonenumber.contact_id не может быть NULL
Это часть представления:
def main(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name'],
birth_day = form.cleaned_data['birth_day'],
address = form.cleaned_data['address'],
# contact1= form.cleaned_data['id']
phone_type = form.cleaned_data['phone_type']
phonenumber = form.cleaned_data['phonenumber']
contact = Contact(
name = form.cleaned_data['name'],
birth_day = form.cleaned_data['birth_day'],
address = form.cleaned_data['address'],
)
contact.save()
number = PhoneNumber(
# contact1 = form.cleaned_data ['id']
phone_type = form.cleaned_data['phone_type'],
phonenumber = form.cleaned_data['phonenumber'],
)
number.save()
Я знаю, что должен заполнить ID человека в этом ForeignKey, но я подумал, что именно так ForeignKey сделает для меня.
Два закомментированных объекта "contact1" не работали. Но это в основном то, что я хочу, добавьте идентификатор к этому.
Кроме того, Django всегда добавляет первичный ключ _id к каждой таблице (контакт и номер телефона).
Так что я не понял, почему, Джанго не добавил к этому.
Как я могу сохранить это в БД с правильным идентификатором, первичным ключом и т. Д.
Спасибо