Ruby on Rails uses "correct" plural forms in code. But in order to do this it contains a special library to pluralize words correctly, e.g. octopus -> octopuses. And naturally that strategy requires per-language and per-word knowledge, and can go wrong when trying to use non-english words.
Rather than use such "magic", Django takes a simple, pragmatic, predictable approach of just appending "_set". Similarly Meta.verbose_name_plural simply appends an "s". If these behaviours aren't suitable for you, you're free to override them for your project.
from functools import partial
from django.db import models
ForeignKey = partial(models.ForeignKey, related_name="%(class)ss")
class Author(models.Model):
...
class Book(models.Model):
author = ForeignKey(Author, on_delete=models.CASCADE)
...