Skip to content

Instantly share code, notes, and snippets.

View goutomroy's full-sized avatar

Goutom Roy goutomroy

View GitHub Profile
try:
one_entry = Entry.objects.get(blog=2000)
except Entry.DoesNotExist:
# query did not match to any item.
pass
except Entry.MultipleObjectsReturned:
# query matched multiple items.
pass
else:
# Don't
for entry in Entry.objects.all():
entry.likes += 1
entry.save()
# Do
Entry.objects.update(likes=F('likes') + 1)
# Don't
most_liked = 0
for entry in Entry.objects.all():
if entry.likes > most_liked:
most_liked = entry.likes
# Do
most_liked = Entry.objects.all().aggregate(Max('likes'))['likes__max']
# Don't
count = len(Entry.objects.all()) # Evaluates the entire queryset
# Do
count = Entry.objects.count() # Executes more efficient SQL to determine count
# Don't
qs = Entry.objects.all()
if qs:
# Don't.Delete one by one.
for entry in Entry.objects.all():
entry.delete()
# Do.Delete all at once.
Entry.objects.all().delete()
# Don't
for entry in Entry.objects.all():
entry.likes += 1
# Don't
for i in range(20):
Blog.objects.create(name="blog"+str(i), headline='tagline'+str(i))
# Do
blogs = []
for i in range(20):
blogs.append(Blog(name="blog"+str(i), headline='tagline'+str(i)))
Blog.objects.bulk_create(blogs)
class Author(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField()
def __str__(self):
return self.name
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
# Don't. Needs database hit
blog_id = Entry.objects.get(id=200).blog.id
# Do. The foreign key is already cached, so no database hit
blog_id = Entry.objects.get(id=200).blog_id
# Do. No database hit
blog_id = Entry.objects.select_related('blog').get(id=200).blog.id
@goutomroy
goutomroy / Step By Step Virtualenv, Django, Postgres, NGINX, Gunicorn, HTTPS on DigitalOcean This is every step, in detail, to create a Django App with Postgres, NGINX, Gunicorn, and HTTPS on Digital Ocean. The only thing I don't go over is how to create a droplet and manage the domain.
Reference:
Django/Postgres/Nginx/Gunicorn in Ubuntu: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04
Encryption: https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
Where you see "user", "myproject" and "myprojectuser" replace that with what is relevent to what you are working on.
User Setup
$ ssh root@SERVER_IP_ADDRESS
Complete login process