Как в Django связать форму с моделью, чтобы данные, введенные в форму, вставлялись в таблицу базы данных, связанную с моделью? Как сохранить этот пользовательский ввод в эту таблицу базы данных?
Например:
class PhoneNumber(models.Model):
FirstName = models.CharField(max_length=30)
LastName = models.CharField(max_length=30)
PhoneNumber = models.CharField(max_length=20)
class PhoneNumber(forms.Form):
FirstName = forms.CharField(max_length=30)
LastName = forms.CharField(max_length=30)
PhoneNumber = forms.CharField(max_length=20)
Я знаю, что есть класс для создания формы из модели, но даже там мне неясно, как данные на самом деле попадают в базу данных. И я хотел бы понять внутреннюю работу, прежде чем перейти к экономии времени. Если есть простой пример того, как это работает в документах, я пропустил это.
Спасибо.
ОБНОВЛЕНИЕ:
Чтобы быть ясным - я знаю об инструменте ModelForm, я пытаюсь выяснить, как сделать это без этого - отчасти, чтобы я мог лучше понять, что он делает в первую очередь.
ОТВЕТИЛ:
С помощью ответов я пришел к этому решению:
Определение формы:
class ThisForm(forms.Form)
[various Field assignments]
model = ThisModel()
Код в представлениях для сохранения введенных данных в базу данных:
if request_method == 'POST':
form = ThisForm(request.POST)
if form.is_valid():
for key, value in form.cleaned_data.items():
setattr(form.model, key, value)
form.model.save(form.model)
После этого данные, введенные в форму браузера, находились в таблице базы данных.
Обратите внимание, что вызов метода save () модели требовал передачи самой модели в качестве аргумента. Понятия не имею почему.
ПРЕДУПРЕЖДЕНИЕ: Я новичок. Это позволило получить данные из браузера в таблицу базы данных, но Бог знает только то, что я пренебрег, пропустил или сразу сломал. ModelForm определенно выглядит намного более чистым решением.