Рубрики
Без рубрики

Django Modelforms.

В этом уроке мы будем обсуждать и внедрить модификацию в нашем веб-приложении Django. Почистите модели Django и формы Django, прежде чем

Автор оригинала: Pankaj Kumar.

В этом уроке мы будем обсуждать и внедрить модификацию в нашем веб-приложении Django. Почистите модели Django и формы Джанго, прежде чем идти вперед.

Django Modelforms.

Вместо того, чтобы создавать отдельные поля, избыточные формы Django, мы можем сопоставить их к определенной модели. Это называется модельфа.

Modelform – это класс, который можно импортировать:

from django.forms import ModelForm

Ниже приведет преимущества использования модельфа:

  • Моделка полезна, когда мы хотим создавать формы из полей базы данных.
  • Мы можем добавить наши собственные проверки проверки на полях модели базы данных.
  • Мы можем включить и исключить поля из модели в соответствии с нашим выбором.
  • Легко быстро сохранить данные в базе данных.

Сохранить () Способ сохранения вызывается в экземпляре Django Modelform, чтобы сохранить данные в базу данных (sqlite3).

Сохранение вызывает проверку проверки проверки. А ValueError будет поднят, если данные в форме не подтверждают.

Сохранить () Метод также принимает дополнительный аргумент. Настройка совершать к ложь не сохранит данные в базу данных.

Создание класса модификации

Чтобы создать класс Modelform, нам нужно добавить классную мета внутри него. Внутри Meta Class мы создали создание класса модель Django.

Мы должны включать/исключить поля, которые мы хотим использовать в нашей модели. Включить Поля Мы устанавливаем их в массиве Python.

Если вы хотите включить все поля Поля Отказ

К Исключить Поля устанавливают их внутри соответствующего массива.

Пример нашего класса модели и класса Modelform приведен ниже:

from django.db import models
from django.forms import ModelForm

class SampleModel(models.Model):

    title = models.CharField(max_length=100)
    description = models.CharField(max_length=255)

    def __str__(self):
        return self.title

class SampleModelForm(ModelForm):
    class Meta:
        model = SampleModel
        fields = ['title']

В приведенном выше коде наша Samplemodelform пропускает описание поля. Отображение модификации в нашем веб-приложении Django очень похоже на то, как мы сделали в Учебном пособии Django Forms.

Чтобы сохранить модификацию в базу данных, которую мы делаем:

data = SampleModel(title='Me')
form = SampleModelForm(request.POST, instance=data)
form.save()

Сохранить (commit = false) Как правило, используется, когда мы хотим сохранить измененную версию данных с нами без сохранения. Как правило, для целей тестирования.

Для этого мы можем сделать:

form = SampleModelForm(request.POST)
model = form.save(commit=False)
model.title = 'Anupam testing'
model.save()

От django.forms Импорт ModelforMSE_Factory

В следующем разделе мы построим простое веб-приложение Django Modelforms.

Структура проекта

Примечание : Display0.html содержит резервную копию display.html.

Чтобы настроить вышеуказанный проект, запустите следующий набор команд один после другого в вашем терминале.

mkdir DjangoModelForm
cd DjangoModelForm
virtualenv -p /usr/local/bin/python3 env
source env/bin/activate
pip3 install django
django-admin startproject ModelFormProject
cd ModelFormProject
python3 manage.py runserver
django-admin startapp detailsapp
cd detailsapp
mkdir templates
cd templates
touch userdetails.html
touch display.html
cd ..
touch urls.py
touch forms.py

Наше имя приложения Django – Детали парпу Отказ Добавьте его в настройки .py Stall_apps список. userdetails.html – первая страница нашего приложения.

Код

Код для URLS.PY Файл внутри папки данных PAPP:

from django.urls import path
from django.contrib import admin

from detailsapp import views as detailsapp_views

urlpatterns = [
 path('userdetails/', detailsapp_views.userDetails),
 path('display/', detailsapp_views.userDetails),

path('', admin.site.urls),
]

Код для URLS.PY Файл внутри папки ModelformProject:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('detailsapp.urls'))
]

models.py

from django.db import models
class UserDetails(models.Model):

    title = models.CharField(max_length=100)
    gender = models.CharField(max_length=255)
    notes = models.CharField(max_length=255)

    def __str__(self):
        return self.title

forms.py

from django.forms import ModelForm
from detailsapp.models import UserDetails

class UserModelForm(ModelForm):
    class Meta:
        model = UserDetails
        fields = ['title', 'notes']

views.py

from django.shortcuts import render
from django.db import models
from detailsapp.models import UserDetails
from django.template import loader
from django.http import HttpResponse
from django.forms import modelformset_factory

# Create your views here.

from .forms import UserModelForm

def userDetails(request):

    if request.method == 'POST':
        form = UserModelForm(request.POST)
        if form.is_valid():

            u = form.save()
            users = UserDetails.objects.all()

            return render(request, 'display.html', {'users': users})

            

    else:
        form_class = UserModelForm

    return render(request, 'userdetails.html', {
        'form': form_class,
    })

Когда форма опустотана, что оператор ELVE выполняется и используется для создания формы в файле userdetails.html:





    
    Django Forms Tutorial


Django Forms Tutorial

{% csrf_token %} {{form.as_table}}

пользователи .Objects.all () используется для извлечения всех записей из базы данных и передавать его на display.html файл:





    
    ModelForm Tutorial


All User Details

{% for item in users %} {% endfor %}
Title:{{ item.title }} Gender: {{ item.gender|default:"NA" }} Notes: {{ item.notes }}

Поскольку поле Gender исключено, мы установили значение по умолчанию на него с помощью шаблонов Django.

Для запуска приложения на ваш localhost мы должны сформировать сохранение моделей в базе данных

python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py runserver

Выход приложения в действии приведен ниже:

Чтобы очистить базу данных, запустите следующую команду:

python3 manage.py flush

Это приводит к концу этому руководству. Мы будем охватывать более пользовательские функции помощника и добавления наших собственных проверок проверки в следующем уроке.
В исходном коде ниже мы добавили кусок кода для использования). Рассматрите это и прокомментируйте код, который использует сохранение (). Мы добавили шаблон для него в Display0.html. Скопируйте его на отображение .html.