Python/Django ORM
Torolàlana Django ORM: Endri-javatra Fototra sy Mandroso
hanovaDjango ORM (Object-Relational Mapping) dia fitaovana mahery vaika izay mamela anao hiasa amin'ny tahiry amin'ny alalan'ny modely Python, ka tsy mila manoratra SQL mivantana. Ity cheatsheet ity dia manome topi-maso fohy momba ny endri-javatra fototra sy mandroso amin'ny Django ORM.
Fomba fototra amin'ny Django ORM
hanova- Fametrahana sy Fampiasana ny Django :
Mba hampiasana Django ORM dia mila mametraka sy mampifandray amin'ny tetikasa Django ianao.
pip install django
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
- Famoronana Modely (Models) :
Modely dia kilasy iray izay maneho ny firafitry ny tahiry ao amin'ny Django ORM.
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
email = models.EmailField()
def __str__(self):
return self.name
- Fampiharana Migrations :
Migrations dia ampiasaina amin'ny famoronana sy fanavaozana ny firafitry ny tahiry mifototra amin'ny modely.
python manage.py makemigrations
python manage.py migrate
- Fametrahana Angona ao amin'ny Tahiry :
Azonao atao ny mametraka angona vaovao ao amin'ny tahiry amin'ny alalan'ny famoronana zavatra avy amin'ny modely.
user = User(name='Rakoto', age=30, email='rakoto@example.com')
user.save()
- Fikarohana Angona :
Django ORM dia manohana ny fikarohana angona amin'ny alalan'ny methods toy ny all()
, filter()
, ary get()
.
users = User.objects.all()
for user in users:
print(user.name, user.age)
rakoto = User.objects.get(name='Rakoto')
print(rakoto.email)
- Fanavaozana sy Famafana Angona :
Azonao atao ny manavao na mamafa angona avy amin'ny tahiry amin'ny alalan'ny zavatra modely.
- Fanavaozana
rakoto = User.objects.get(name='Rakoto')
rakoto.age = 31
rakoto.save()
- Famafana
rakoto.delete()
Endri-javatra Mandroso amin'ny Django ORM
hanova- Fifandraisana (Relationships) :
Django ORM dia manohana ny fifandraisana eo amin'ny modely toy ny One-to-Many, Many-to-Many, ary ny ForeignKey.
- ForeignKey (One-to-Many)
class Address(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
city = models.CharField(max_length=100)
street = models.CharField(max_length=100)
- Many-to-Many
class Group(models.Model):
name = models.CharField(max_length=100)
members = models.ManyToManyField(User)
group = Group(name='Developers')
group.save()
group.members.add(rakoto)
- Queries Mandroso :
Django ORM dia manohana queries mandroso toy ny Q objects
sy ny annotate()
ary ny aggregate()
.
- Q Objects
from django.db.models import Q
results = User.objects.filter(Q(name='Rakoto') | Q(age=25))
- Annotate sy Aggregate
from django.db.models import Count
groups = Group.objects.annotate(num_members=Count('members'))
for group in groups:
print(group.name, group.num_members)
- Managers (Fandrindrana Queries) :
Managers dia ampiasaina hamaritana queries manokana ao amin'ny modely.
class UserManager(models.Manager):
def get_adults(self):
return self.filter(age__gte=18)
class User(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
objects = UserManager()
adults = User.objects.get_adults()
- Transactions :
Django ORM dia manohana ny transactions ho an'ny fanavaozana angona miverina.
from django.db import transaction
with transaction.atomic():
user = User(name='Rabe', age=25)
user.save()
address = Address(user=user, city='Antananarivo', street='Lalana Andrianampoinimerina')
address.save()
- Fikarohana sady mamerina angona be dia be (QuerySet Chaining) :
Django ORM dia manohana ny chaining amin'ny queryset mba hanaovana queries lava be sy marina.
results = User.objects.filter(age__gte=18).exclude(email__isnull=True).order_by('-age')
- Custom Query Expressions :
Django ORM dia manohana ny fampiasana custom expressions ao amin'ny queries.
from django.db.models import F
users = User.objects.filter(age__gte=F('group__min_age'))
Fehiny
hanovaDjango ORM dia fitaovana mahery vaika sy mora ampiasaina ho an'ny fitantanana tahiry amin'ny alalan'ny modely Python. Amin'ny alalan'ny fahalalana ireo endri-javatra fototra sy mandroso ireo, dia afaka mamorona rindrambaiko matotra sy manintona ianao amin'ny alalan'ny Django ORM, ka manamora ny fitantanana angona sy ny fifandraisana amin'ny tahiry.