related_name is an attribute you use while defining relations like many-to-one, many-to-many, one-to-one etc.
The value of this attribute is used as the name of the reverse relation between models.
site = models.ForeignKey(Site, related_name='myapp_pages')
Here we define a many-to-one relation using a Foreign Key. A Site can have many Pages. The relation from a Site to its pages can be expressed as such:
site = Site.objects.get(sitename="mysite")
pages = site.myapp_pages.all()
A reverse relation can be defined from the Site to Pages as you see above. It is important to understand the importance of related_name attribute. related_name can save you from many headaches by preventing clashes from ever happening in your applications. Different models having a Foreign Key relation to the same “X” model could have clashes for using the same default related_name values.
Explicitly specifying related_name values for your relations will save you a lot of troubles later.
Hope this helps.