1
resposta

related_name

Gostaria de auxilio para entender sobre o que significa o related_name na situação abaixo:

class Convite(models.Model):
    solicitante = models.ForeignKey(Perfil, related_name='convites_feitos')
    convidado = models.ForeignKey(Perfil, related_name='convites_recebidos')
1 resposta

Olá renan, como está na explicação do curso, o 'related_name' criará automaticamente na classe Perfil os atributos convites_feitos e convites_recebidos. Agora, a classe Convite conhece seus perfis solicitante e convidado e a classe Perfil conhece todos os convites feitos por ela e também recebidos. Isso permite fazer:

>>> perfil = Perfil.objetcs.get(id=1)
>>> perfil.convites_feitos # exibe todos os convites feitos pelo perfil
>>> perfil.convites_recebidos # exibte todos os convites recebidos pelo perfil

O modelo com a chave estrangeira ('foreign key') usa o nome do campo related_name para procurar outro modelo. Se você não especificar o related_name o Django vai criar um por padrão utilizando o nome do modelo em caixa baixa e acrescentar o sufixo _set.

Você pode ler mais sobre o related_namena documentação do django: https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.ForeignKey.related_name

Espero ter ajudado e bons estudos!