2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Django इत्यस्य ORM (Object Relational Mapping) इत्यनेन दत्तांशकोशेन सह अन्तरक्रियायाः सुविधाजनकः उपायः प्राप्यते ।
在 `myapp/models.py` 中定义一个示例模型:
```python
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
city = models.CharField(max_length=100)
def __str__(self):
return self.name
दत्तांशकोशसारणीनां निर्माणार्थं प्रवासन आदेशं चालयन्तु:
python manage.py makemigrations
python manage.py migrate
from myapp.models import Person
# 创建并保存一个新对象
person = Person(name='Alice', age=25, city='New York')
person.save()
create()
प्रक्रियाperson = Person.objects.create(name='Bob', age=30, city='Los Angeles')
people = Person.objects.all()
for person in people:
print(person.name, person.age, person.city)
person = Person.objects.get(id=1)
print(person.name, person.age, person.city)
# 获取所有年龄大于25的人
people = Person.objects.filter(age__gt=25)
for person in people:
print(person.name, person.age, person.city)
person = Person.objects.get(id=1)
person.age = 26
person.save()
Person.objects.filter(city='New York').update(city='NYC')
person = Person.objects.get(id=1)
person.delete()
Person.objects.filter(age__lt=20).delete()
people = Person.objects.all().order_by('age')
for person in people:
print(person.name, person.age, person.city)
people = Person.objects.all().order_by('city', '-age')
for person in people:
print(person.name, person.age, person.city)
Django ORM प्रत्यक्षतया समूहीकरणक्रियाणां समर्थनं न करोति, परन्तु भवान् उपयोक्तुं शक्नोति annotate
तथाaggregate
समानकार्यक्षमतां प्राप्तुं पद्धतयः।
annotate
समूहगणना करोतुfrom django.db.models import Count
# 按城市分组并计数
city_counts = Person.objects.values('city').annotate(count=Count('id'))
for city_count in city_counts:
print(city_count['city'], city_count['count'])
aggregate
समुच्चयक्रियाः कुर्वन्तुfrom django.db.models import Avg, Max, Min
# 计算平均年龄
average_age = Person.objects.aggregate(Avg('age'))
print(average_age) # 输出: {'age__avg': 27.5}
# 计算最大和最小年龄
age_stats = Person.objects.aggregate(Max('age'), Min('age'))
print(age_stats) # 输出: {'age__max': 30, 'age__min': 25}
from django.db.models import Q
# 获取年龄大于25或城市为'New York'的人
people = Person.objects.filter(Q(age__gt=25) | Q(city='New York'))
for person in people:
print(person.name, person.age, person.city)
from django.db.models import F
# 获取年龄大于等于城市长度的人
people = Person.objects.filter(age__gte=F('city__length'))
for person in people:
print(person.name)