Ajouter un nom associé à une réponse existante est un must dans le cas où 2 FK dans le modèle pointent vers la même table. Par exemple, dans le cas du projet de loi de matériel
@with_author
class BOM(models.Model):
name = models.CharField(max_length=200,null=True, blank=True)
description = models.TextField(null=True, blank=True)
tomaterial = models.ForeignKey(Material, related_name = 'tomaterial')
frommaterial = models.ForeignKey(Material, related_name = 'frommaterial')
creation_time = models.DateTimeField(auto_now_add=True, blank=True)
quantity = models.DecimalField(max_digits=19, decimal_places=10)
Ainsi, lorsque vous devrez accéder à ces données vous ne pouvez utiliser le nom lié
bom = material.tomaterial.all().order_by('-creation_time')
Il ne fonctionne pas autrement (au moins je n'étais pas en mesure pour passer l'utilisation du nom associé dans le cas de 2 FK à la même table.)
@DanielRoseman Est-ce que c'est bon pour la performance ou une bonne pratique d'utiliser related_name = '+' quand la relation en arrière n'est pas nécessaire? – lajarre
Je serais curieux de connaître la réponse à la question de @ lajarre. – 3cheesewheel
@lajarre - Je suppose que cela ne changera rien à la performance. J'ai dû l'utiliser une fois avec les types de contenu FeinCMS. Personnellement, je pense que c'est une bonne pratique de toujours spécifier le 'related_name', donc si vous savez que vous ne l'utiliserez pas, je suppose que c'est une bonne chose. C'est une opinion personnelle bien sûr. –