One line create and save:
Article.objects.create(name='Item 1', price=19.95)
Retrieve all objects:
Article.objects.all()
Create object:
user = User.objects.first()
article = Article(user=user, name='Item 1', price=19.95)
article.save()
# One Line Create
obj = Article.objects.create(user=user, name='Item 1', price=19.95)
Bulk Create (improves performance):
MyModel.objects.bulk_create([
MyModel(field_name='value1', another_field=42),
MyModel(field_name='value2', another_field=43),
])
Save:
article.save()
Read one:
Article.objects.get(id=1)
Select Related (to avoid n+1 query):
posts = Post.objects.select_related('user', 'category').all()
Read or render a 404 not found page:
from django.shortcuts import get_object_or_404
article = get_object_or_404(Article, id=512)
Filter:
Article.objects.filter(model='dyson', name__icontains='dyson') # __icontains
Article.objects.filter(year__gt=2016) # __gt = greater than
Article.objects.filter(year__lt=2001) # __lt = less than
Filter on relationship sub model field:
Article.objects.get(user__username='mike')
Ordering:
Article.objects.order_by('name') # ascending
Article.objects.order_by('-name') # descending
Slicing return first:
Article.objects.all().order_by('name')[0]
Slicing return last:
Article.objects.all().order_by('-name')[0]
Slicing limit/offset:
Article.objects.all().order_by('name')[1..10]
Updating:
article = Article.objects.first().update(field_name='new_value')
One line update:
Article.objects.filter(id=4).update(name='new name')
Deleting:
article = Article.objects.first()
article.delete()
One line delete:
article.objects.get(id=1).delete()
Delete all:
Article.objects.all().delete()
Set ForeignKey field value:
model1 = Model(name='dyson')
article.model = model1
Get ForeignKey value:
article1.model.name
model1.article_set.all()
Add Many-to-Many:
article1.tags.add(tag1)
article1.tags.all()
tag1.articles_set.all()
Exclude objects:
excluded_objects = MyModel.objects.exclude(field_name='value')
Count objects:
count_objects = MyModel.objects.count()
Check if an object exists:
exists = MyModel.objects.filter(field_name='value').exists()