Автор оригинала: 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.
Мы создаем наборы отдельных моделей и сливаются их в классе. На запросе модели учителя студенты автоматически обновляются, благодаря через
Отказ