PyNotes
Open in Telegram
**Code is communication** admin: @Xojarbu https://t.me/solutions_py for problem solutions
Show more270
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
270
#Django_ORM #Database
Convert existing databases to Django models
python manage.py inspectdb
or
python manage.py inspectdb > models.py270
#Django_ORM #ordering
Order queryset by case insensitive manner
User.objects.all().order_by(Lower('username'))270
#Django_ORM #Models
Signals vs Overriding .save
—If your fields depend on a model you control, override .save
—If your fields depend on a model from a 3rd party app, which you do no control, use signals.
270
#Django_ORM #filters
Find Nth record from the query by using slice operator except using first() and last()
e.g
user = User.objects.order_by('-last_login')[2] // Second Highest record w.r.t 'last_login'
Sql query will look like this:
SELECT "auth_user"."id",
"auth_user"."password",
"auth_user"."last_login",
"auth_user"."is_superuser",
"auth_user"."username",
"auth_user"."first_name",
"auth_user"."last_name",
"auth_user"."email",
"auth_user"."is_staff",
"auth_user"."is_active",
"auth_user"."date_joined"
FROM "auth_user"
ORDER BY "auth_user"."last_login" DESC
LIMIT 1
OFFSET 2270
#Django_ORM #filters
Select_related, prefetch_related
class ModelA(models.Model):
pass
class ModelB(models.Model):
a = ForeignKey(ModelA)
ModelB.objects.select_related('a').all() # Forward ForeignKey relationship
ModelA.objects.prefetch_related('modelb_set').all() # Reverse ForeignKey relationship
270
#Django_ORM #filters
F
F is used to filter fields of the same model:
User.objects.filter(last_name=F("first_name"))
270
#Django_ORM #filters
Subquery
Django allows using SQL subqueries. Let’s start with something simple, We have a UserParent model which has OnetoOne relation with auth user. We will find all the UserParent which have a UserParent.
from django.db.models import Subquery
users = User.objects.all()
UserParent.objects.filter(user_id__in=Subquery(users.values('id')))
#source
https://books.agiliq.com/projects/django-orm-cookbook/en/latest/subquery.html
270
#Django_ORM #filters
NOT
1)queryset = User.objects.filter(~Q(id__lt=5))
2)exclude(condition)
270
#Django_ORM #filters
AND in filters:
1) queryset = User.objects.filter( first_name__startswith='R') and User.objects.filter(last_name__startswith='D')
2) queryset_1 & queryset_2
3)filter(Q(<condition_1>) & Q(<condition_2>))
270
#Django_ORM #filters
OR in filters:
1) queryset = User.objects.filter( first_name__startswith='R') | User.objects.filter(last_name__startswith='D')
2)qs = User.objects.filter(Q(first_name__startswith='R')|Q(last_name__startswith='D'))
In both cases SQL query will be the same
270
#Filters
gt - greater than
gte- greater thank or equal
lt -less than
lte less than or equal
e.g Event.objects.filter(visits__gt=15)270
If you want to change your last commit message that is not pushed yet:
git commit --amend -m "New and correct message"270
Know when to be inconsistent – sometimes the style guide just doesn’t apply. When in doubt, use your best judgment. Look at other examples and decide what looks best. And don’t hesitate to ask!
знайте, когда нужно быть непоследовательным - иногда руководство по стилю просто неприменимо. В случае сомнений используйте здравый смысл.
Посмотрите другие примеры и решите, что выглядит лучше всего. И не стесняйтесь спрашивать!
Andrei Boyanov SSE
270
In Python scripts, top-level function and classes are separated by two blank lines. Method definitions inside classes should be separated by one blank line.
270
Code Should have line length of 79 characters
Comments should have 72 characters of line length.
