В чем разница между моделями и формами Django? - PullRequest
14 голосов
/ 30 марта 2011

Я новичок в Django и не могу понять модели и формы. Может кто-нибудь предложить мне различия и учебники, связанные с ними.

Ответы [ 2 ]

35 голосов
/ 30 марта 2011

По сути, модель инкапсулирует информацию о чем-либо (то есть, она моделирует это) и сохраняется в базе данных. Например, мы могли бы смоделировать человека:

from django import models

class Person(models.Model):
    name = models.CharField(max_length=100)
    age = models.PositiveIntegerField()
    height = models.FloatField()
    weight = models.FloatField()

Каждый раз, когда экземпляр модели создается и сохраняется, Django сохраняет его в базе данных для последующего извлечения и использования.

С другой стороны, формы соответствуют HTML-формам, т. Е. Набору полей, которые предоставляются конечному пользователю для заполнения некоторых данных. Форма может быть полностью независимой от модели, например формы поиска:

from django import forms

class SearchForm(forms.Form):
    search_terms = forms.CharField(max_length=100)
    max_results = forms.IntegerField()

При отправке Django заботится о проверке значений, введенных пользователем, и преобразовании их в типы Python (например, целые числа). Все, что вам нужно сделать, это написать код, который что-то делает с этими значениями.

Конечно, если вы создали модель, вам часто нужно разрешить пользователю создавать эти модели с помощью формы. Вместо того, чтобы дублировать все имена полей и создавать форму самостоятельно, Django предоставляет ярлык для этого, ModelForm:

from django.forms import ModelForm

class PersonForm(forms.ModelForm)
    class Meta:
        model = Person

Что касается дальнейшего чтения, я бы начал с документации Django , которая включает в себя учебное пособие по созданию и использованию моделей и довольно углубленный взгляд на формы. Есть также множество книг и онлайн-учебников по Django, которые помогут вам в этом.

8 голосов
/ 30 марта 2011

Модели относятся к уровню абстракции базы данных, описанному в Уроке 1:

http://docs.djangoproject.com/en/dev/intro/tutorial01/

Он охватывает все, от того, что они есть, какова философия, что она абстрагирует (raw sql). Прочтите это и возвращайтесь, если у вас есть какие-либо вопросы, потому что это действительно хорошо.

Урок 4 охватывает формы.

http://docs.djangoproject.com/en/dev/intro/tutorial04/

Фреймворк форм - это просто помощник для форм HTML. Существуют также ModelForms, основанные на фреймворке форм, который связывает модели вместе с формами, но ядром его является фреймворк для отображения, проверки и обработки HTML-форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...