видео эмоциональное, я просто хотел прокричать, как нужно делать.
В чём собственно вопрос?
Есть ребята, которые год занимаются и говорят так:"по примеру написать могу, а сам не могу".
Есть люди, которые занимаются три месяца и пишут довольно сложный код.
Сначала посмотрите видео, а потом дальше читайте статью:
Правильный и неправильный подход при изучении Django Python на примере.
видео эмоциональное, я просто хотел прокричать, как нужно делать.
В чём собственно вопрос?
Есть ребята, которые год занимаются и говорят так:"по примеру написать могу, а сам не могу".
Есть люди, которые занимаются три месяца и пишут довольно сложный код.
Даже, если у вас получается, как в первом варианте, то не относите себя к категории плохо-хорошо.
Вообще, не используйте эти категории для оценки.
Важно понять есть метод обучения дающий результат стабильный, есть метод обучения,
не дающий стабильный результат.
Задача этого видео разъяснить на примере, как заниматься по методу дающему результат и
чем он отличается от метода не дающего результат.
Вы уже наверное поняли, вам просто нужно будет немного подкорректировать действия и вы получите желаемый результат в любом языке программирования.
ссылка на эту статью в группе (для учатников)
Ссылки, которые использовались в видео:
Как правильно изучать Django? Другие методики не работают.
https://spb-tut.ru/guest/pages/294/
Хотите стать программистом? Читайте.
https://spb-tut.ru/reviews/
# -*- coding: utf-8 -*- from django.db import models class Category(models.Model): # модель class Meta: verbose_name = 'Категория' # Так будет назваться таблица в админке ед. число verbose_name_plural = 'Категория' # Так будет назваться таблица в админке мн. число rang = models.CharField(max_length=120, verbose_name='Категория', unique=True, help_text='Ранг учебного заведения', default='Гос.школа') """ models.CharField малое текстовое поле со следующими характерискикати: max_length - обязательный параметр verbose_name - так будет назваться наш столбец в таблице unique - означает что данное поле уникальное, т.е. эта категория будет единственной help_text - подсказвает пользователь что нужно занести в поле (информационная подсказка) default - по умолчанию в этом поле выставлено это значение == 'Гос.школа' """ def __str__(self): # Python 3 return self.rang # Корректное отображение в таблицы сохранненного объекта class NameSchool(models.Model): class Meta: verbose_name = 'Название школы' verbose_name_plural = 'Название школы' ordering = ['name'] # Сортировка будет происходить по возрастарию по полю == name name = models.CharField(max_length=30, help_text='Введите названи заведения', verbose_name='Название') rank = models.CharField(max_length=200, help_text='Введите звания', verbose_name='Звания', blank=True) # blank=True означает что это поле можно не заполнять и оно корректно сохраниться def __str__(self): return self.name class Address(models.Model): class Meta: verbose_name = 'Адрес' verbose_name_plural = 'Адрес' srteet = models.CharField(max_length=200, help_text='Введити улицу и строениу', verbose_name='Улица') region = models.CharField(max_length=200, help_text='Введите микрорайон', verbose_name='Район') email = models.EmailField(help_text='Почта школы', blank=True) internet = models.URLField(max_length=200, help_text='Сайт школы', verbose_name='Сайт', blank=True) # models.EmailField поле для коректного внесения емейла (проверяет наличие@) # models.URLField поле для url адреса def __str__(self): return self.srteet class Teacher(models.Model): CHOICES = ( ('ОТ', 'Отпуск',), ('БЛ', 'Бальничный лист'), # итератор из картежей значиени ОТ,БЛ,РБ сохраняются в БД и по им будет ('РБ', 'Работает'), # пользователь выбирать в поле **state** ) class Meta: verbose_name = 'Учителя' verbose_name_plural = 'Учителя' personal = models.CharField(max_length=120, verbose_name='Сотрудник', help_text='Имя Отчество') subject = models.CharField(max_length=50, verbose_name='Предмет', help_text='Наименование предмета') rank = models.CharField(max_length=200, verbose_name='Звания', blank=True, help_text='профессор, доктор наук, учитель года') status = models.BooleanField(blank=True) state = models.CharField(max_length=2, choices=CHOICES, default='РБ') # models.BooleanField(blank=True) булево поле может быть не активно def __str__(self): return self.personal class Children(models.Model): class Meta: verbose_name = 'Ученики' verbose_name_plural = 'Ученики' students = models.CharField(length=88, verbose_name='Учащиеся', help_text='Имя') age = models.IntegerField(blank=True, null=True) # models.IntegerField(blank=True, null=True) числовое поле blank и null обязательны для корректной работы # если мы хотим чтобы поле могло сохраняться пустыь def __str__(self): return self.students class RoomClass(models.Model): class Meta: verbose_name = 'Класс' verbose_name_plural = 'Класс' ordering = ['-number'] # сортировка в обратном порядке по полю number number = models.CharField(max_length=10, verbose_name='Номер класса', help_text='Введите класс') floor = models.IntegerField(blank=True, null=True) def __str__(self): return self.number class School(models.Model): class Meta: verbose_name = 'Школа' verbose_name_plural = 'Школа' ordering = ['nominal'] category = models.ForeignKey(Category, verbose_name='Категория', on_delete=models.Cascade) # многое к одному nominal = models.ForeignKey(NameSchool, verbose_name='Название') address = models.ForeignKey(Address, verbose_name='Адрес') teacher = models.ManyToManyField(Teacher, related_name='working', verbose_name='Учителя') # многое к многомн children = models.ManyToManyField(Children, verbose_name='Ученики') room = models.ManyToManyField(RoomClass, verbose_name='Класс') director = models.CharField(max_length=200, help_text='Ф.И.О', verbose_name='Директор') work = models.BooleanField(blank=True, verbose_name='Работает') building = models.CharField(max_length=50, default='3-х этажное', verbose_name='Здание') # related_name по названию working мы можем осуществлять обратную связь со связанной моделью # т.е. можем выбирать данные из ее что то подобное на менеджер модели def __str__(self): return str(self.nominal) # так как объет числовой наличие str обязательно views.py from django.shortcuts import render from .models import Category, School def category(request): category = Category.objects.all() return render(request, 'category.html', {'category': category}) def one(request, one_id): context_dict = {} try: category = Category.objects.get(pk=one_id) context_dict['cotegory_rang'] = category.rang one = School.objects.filter(category=category) context_dict['one'] = one context_dict['category'] = category except Category.DoesNotExist: pass return render(request, 'one.html', context_dict) def only_one(request, only_one_id): only_one = School.objects.get(pk=only_one_id) return render(request, 'only.html', {'only_one': only_one}) category.html {%extends 'base.html'%} {%load staticfiles%} {%block content%}Все категории
{%if category%}
Категория: {{only_one.category}}
Название: {{only_one.nominal}}
Адресс: {{only_one.address}}
Преподователи:{%for list in only_one.teacher.all%} {{list.personal}} {%if not forloop.last%}, {%else%}{%endif%} {%endfor%}
Школьники:{%for list in only_one.children.all%} {{list.students}} {%if not forloop.last%}, {%else%}{%endif%} {%endfor%}
Классы:{%for list in only_one.room.all%} {{list.number}} {%if not forloop.last%}, {%else%}{%endif%} {%endfor%}
Директор школы: {{only_one.director}}
Статус: {{only_one.work}}
Этажность:{{only_one.building}}
Kotlin + Android + blockchain, разработки приложений с нуля.
Создание приложений в Android Studio на языке программирования Kotlin. Подробное руководство.
http://kotlinlang.spb-tut.ru/
быстрый старт
http://kotlinlang.spb-tut.ru/info/fast_start/
Блокчейн с нуля + Python + Solidity. Программирование, обучение, разработка смарт контрактов.
Онлайн школа Blockchain,
для начинающих программистов от
В. Бовсуновского.
Быстрый старт
http://blockchain.spb-tut.ru/blockchain-plus-python/quick-start-blockchain/