A cheatsheet for commonly used Django snippets.

Override save() in models

def save(self, *args, **kwargs):
    super(ModelClass, self).save(*args, **kwargs)

Timezone Aware datetime

from django.utils import timezone

# UTC
timezone.now()

# In current timezone
timezone.localtime()

String join lists in Django Template


Aggregation

from django.db.models import Avg, Max, Sum

# number of items
MyModel.objects.all().count()

# sum
# get the sum of all the 'total_amount' values of the MyModel object
amount_sum = MyModel.objects.all().aggregate(Sum("total_amount"))
val = amount_sum["total_amount__sum"]

Pass data from view to serializer (Django DRF)

In your APIView in views.py:

# override
def get_serializer_context(self):
    context = super().get_serializer_context()
    context.update({"request": self.request})
    context.update({"myvalue": self.kwargs["my_url_kwarg"]})
    # self.kwargs["my_url_kwarg"] is just an example for a common use case
    # you can pass anything here
    return context

In the corresponding serializer in serializers.py:

addr = self.context.get('myvalue', None)