Just Django – Telegram
Just Django
688 subscribers
6 photos
11 files
135 links
Я django senior разработчик, который любит обучать других. Здесь вы узнаете, как создавать приложения на django и как стать отличным django разработчиком!

Сотрудничество - @S0mebo0dy
Download Telegram
#useful_stuff

Наследование многотабличной модели

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

# models.py

from django.db import models

# Create your models here.

class Place(models.Model):
name=models.CharField(max_length=20)
address=models.TextField(max_length=20)

def __str__(self):
return self.name


class Restaurants(Place):
serves_pizza=models.BooleanField(default=False)
serves_pasta=models.BooleanField(default=False)

def __str__(self):
return self.serves_pasta

# admins.py

from django.contrib import admin
from .models import Place,Restaurants
# Register your models here.

admin.site.register(Place)
admin.site.register(Restaurants)

В этом наследовании также создается таблица базового класса.
Oн создаст отношение модели один к одному для таблицы Restaurants из таблицы Place.
#useful_stuff

Наследование прокси-модели

Этот стиль используется, если вы хотите только изменить поведение модели на уровне Python без изменения полей модели.

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

Базовый класс не должен быть абстрактным классом.

Мы не можем использовать множественное наследование в прокси-моделях.

Основное использование - перезапись основных функций существующей модели.

# models.py
from django.db import models

# Create your models here.

class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)

class MyPerson(Person):
class Meta:
proxy = True

def fullName(self):
return self.first_name + " " + self.last_name

Класс MyPerson работает с той же таблицей базы данных, что и его родительский класс Person.

В частности, любые новые экземпляры Person также будут доступны через MyPerson, и наоборот:

In [1]: from MyApp.models import Person, MyPerson

In [2]: p = Person(first_name = "Anton", last_name = "Anton")

In [3]: p.save()

После добавления данных теперь мы можем получить доступ к first_name и last_name с помощью метода fullName() класса MyPerson.

In [7]: myperson = MyPerson.objects.all()[0]

In [8]: myperson.fullName()
Out[8]: 'Anton Anton'
MongoDB становится все более популярным. И я считаю это правильным, потому что за NoSQL будущее.

Итак, как насчет нас (django разработчиков ), есть ли у нас способ использовать MongoDB?

Ну, у нас нет одного, у нас их 3. Если вам интересно, то читайте подробнее здесь.
Лучшие каналы o Django на YouTube (на английском языке):

- CodingEntrepreneurs
- Corey Schafer
- Dennis Ivy
- Programming with Harry
- Codemy .com
- Code With Stein
- Very Academy
- Telusko
#useful_stuff

Вкратце о MongoDB:

import pymongo
#connect_string = 'localhost'

from django.conf import settings
my_client = pymongo.MongoClient(connect_string, 27017)

# Сначала определите имя базы данных
dbname = my_client['sample_medicines']

# Теперь получите / создайте имя коллекции (помните, что вы увидите базу данных в своем кластере mongodb только после создания коллекции
collection_name = dbname["medicinedetails"]

# давайте создадим два документа
medicine_1 = {
"medicine_id": "RR000123456",
"common_name" : "Paracetamol",
"scientific_name" : "",
"available" : "Y",
"category": "fever"
}
medicine_2 = {
"medicine_id": "RR000342522",
"common_name" : "Metformin",
"scientific_name" : "",
"available" : "Y",
"category" : "type 2 diabetes"
}
# Вставьте документы

collection_name.insert_many([medicine_1,medicine_2])
# Проверить count
count = collection_name.count()
print(count)

# Прочтите документы
med_details = collection_name.find({})
# Распечатать в терминале
for r in med_details:
print(r["common_name"])
# Обновить один документ
update_data = collection_name.update_one({'medicine_id':'RR000123456'}, {'$set':{'common_name':'Paracetamol 500'}})

# Удалить один документ
delete_data = collection_name.delete_one({'medicine_id':'RR000123456'})
Личный совет от меня - изучайте Celery и Reddis.

Эти технологии необходимы. Также попробуйте сделать что-нибудь с Django channels, например мессенджер.

Оптимизация приложений Django - необходимость, также необходимо упростить работу для других.

(Это даст вам огромное преимущество перед другими кандидатами на работе, и начальник высоко оценит.)
Классное видео о том, как использовать Django с Data Science

https://www.youtube.com/watch?v=RGjJmi36dno
#Задачи

Интересное задание:

Подключите elastic search и mongo к любому из ваших django проектов.

Сделайте несколько простых запросов и ответьте на вопрос: когда и почему мы используем elasitc search, mongo и postgres?