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

Модели Django

Django Models, Django Model Fields, Django Model, Verbose_name, Django Model Пример учебника, база данных Django, Crud, Meta Model Code.

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

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

Выполните следующие команды один за другим:

mkdir JournaldevDjangoModels
cd JournalDevDjangoModels
virtualenv -p /usr/local/bin/python3 env
source env/bin/activate
pip3 install django
django-admin startproject DjangoModel
python3 manage.py runserver
django-admin startapp school

Как только мы создали школьное приложение, нам нужно добавить его в Stall_apps внутри settings.py.

Обратите внимание на файл Model.py, который создан в школьном приложении. Это будет самый разыскиваемый файл в этом руководстве. Давайте начнем.

Модели Django

База данных является важной частью любого веб-приложения. Модели Django являются источником информации для ваших данных. Вы можете хранить значения в виде полей в нем.

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

Модели Django используются для выполнения кода SQL за сценой.

Давайте создадим нашу первую модель Django в файле Models.py.

Пример модели Django

Ниже приведен код из файла Models.py:

from django.db import models

# Create your models here.
class Student(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField()
    email = models.EmailField()
    website = models.URLField()

Студент это модель Django с четырьмя полями.

Модель Django поля

Модели Django могут иметь любой из следующих типов полей Шарфилда, Интегерфилд, Элеминфилд, Урлфилд, Датежил, Booleanifield, Autofield, Uuidfield, OneToonefield, Manytoonefield.

Как установить основной ключ?

id = models.AutoField(
        primary_key=True,
    )

Варианты поля

max_length – Установите максимальное количество разрешенных символов

verbose_name – читаемое человеческое имя поля

full_name = models.CharField(verbose_name='full name', max_length=100)

null – Установка NULL, равна true, позволяет нам оставить столбец как пустой. Затем столбец будет хранить NULL в качестве значения.

Пример:

age = IntegerField(null=True)

пустой – Опять же, поле разрешено пустым, если. Бланк используется для проверки формы, где мы можем указать, если ввод в поле является обязательным или нет.

Выбор – Это как 2-кортеж и используется для выбора из списка значений.

from django.db import models

# Create your models here.
class Student(models.Model):
    SECTION = (
        ('A', 'Alpha'),
        ('B', 'Beta'),
        ('C', 'Cappa'),
    )
    name = models.CharField(max_length=30)
    age = models.IntegerField()
    email = models.EmailField()
    website = models.URLField()
    section = models.CharField(max_length=1, choices=SECTION, default=SECTION[1][0])

по умолчанию Вариант поля требуется в вариантах, если не поставить null или пустой вариант.

Как добавить эту модель в базу данных?

python3 manage.py makemigrations school

Вышеуказанная команда создает модель.

Это выход из терминала:

Откроем файл PoseS.PY и создать базовые модели Django и распечатайте их на экране.

from django.shortcuts import render
from school.models import Student
from django.http import HttpResponse
# Create your views here.


def home(request):
   #Creating an entry
   objects = Student.objects.all().delete()
   student = Student(name = "Anupam", email = "anupam@journaldev.com",age = "24", website = "www.journaldev.com",section="A")
   student.save()
   student = Student(name = "Another", email = "another@journaldev.com",age = "21", website = "www.google.com")
   student.save()
   objects = Student.objects.all()
   res ='Printing all Students entries in the DB : 
' for elt in objects: res += "Name: "+elt.name+"
" res += "Age: "+str(elt.age)+"
" res += "Section: "+elt.section+"
" res += "Section Full Name: "+elt.get_section_display()+"
" return HttpResponse(res)

Сохранить () Метод добавляет модели в базу данных.

Каждый раз, когда вы загружаете эту страницу, новая модель будет добавлена. Следовательно, в начале мы Удалить () Все модели.

Для вариантов, чтобы отобразить правую часть, мы используем автогенерированный метод get_section_display ()

Вопросы вдавливания!

Время, чтобы сделать маршрутизацию URL в URLS.PY файл.

Теперь запустите следующие две команды:

python3 manage.py migrate
python3 manage.py runserver

Трудные операции

Альтернативный способ создания нового экземпляра модели Django:

anupam = Student.objects.create(name = "Anupam", email = "anupam@journaldev.com",age = "24", website = "www.journaldev.com",section="A")

Помимо создания, удаления, извлечения, которые мы реализовали до сих пор, мы можем искать данные, а также использующие фильтры.

from school.models import Student
from django.http import HttpResponse

def randomFunctionFilter(request):
   res = ''
   
   object = Student.objects.filter(name = "Anupam")
   res += "Found : %s students
"%len(object) obj = Student.objects.order_by("age") for elt in obj: res += elt.name + '
' return HttpResponse(res)

Как фильтровать больше, чем и меньше, чем?

object = Student.objects.filter(age__lt 10)
object = Student.objects.filter(age__gt 20)

Обновление данных

student = Student.objects.get(name='Anupam')
student.age = 100
student.save()
student = Student.objects.get(name='Anupam')
student.delete()
from django.db import models

class Me(models.Model):
    size = models.IntegerField()

    class Meta:
        ordering = ["-size"]
        verbose_name = "m"
        verbose_name_plural = "meee"
        db_table = "Mytable"

заказ = [«-Сизировать»] Заказы в порядке убывания

Для полного списка функций см. здесь

Иностранные ключи

Давайте создадим новую модель Django и добавить внешний ключ

class Teacher(models.Model):
    name = models.CharField(max_length=100)
    students = models.ManyToManyField(Student)
    user = models.ForeignKey('auth.User', on_delete=models.CASCADE)

    def __str__(self):
        return self.name

ул ...| Метод определяет читаемое человеком представление модели, которая отображается на сайте администратора Django и в оболочке Django.

Иностранный ключ связан с другим классом. На этот раз встроенный класс Django. Опция поля on_delete позволяет делать то, что делать, когда модель удаляется.

  • Каскад: Когда ссылка на ссылок удаляется, также удалите объекты, которые имеют ссылки на него (при удалении сообщения в блоге, например, вы можете также удалить комментарии).
  • Защитите: запрещайте удаление ссылочного объекта. Чтобы удалить его вам придется удалить все объекты, которые ссылаются на его вручную.
  • Set_null: Установите ссылку на NULL (требуется отнудимое поле). Например, когда вы удалите пользователя, вы можете сохранить комментарии, которые он опубликовал в блоге, но сказать, что он был опубликован анонимным (или удаленным) пользователем.
  • Set_default: Установите значение по умолчанию.

через

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

Ниже приведены наши модели.

from django.db import models

# Create your models here.
class Student(models.Model):
    name = models.CharField(max_length=30)


class Teacher(models.Model):
    name = models.CharField(max_length=100)
    members = models.ManyToManyField(Student, through='Classroom')


class Classroom(models.Model):
    student = models.ForeignKey(Student, on_delete=models.CASCADE)
    teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
    date_joined = models.DateField()


Сохраните файл и давайте запустим следующую команду в терминале:

python3 manage.py makemigrations school
python3 manage.py migrate
python3 manage.py shell

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

Мы создаем наборы отдельных моделей и сливаются их в классе. На запросе модели учителя студенты автоматически обновляются, благодаря через Отказ