Dodawanie do istniejącej nazwy związanej z odpowiedzią jest koniecznością na wypadek, gdyby w modelu znajdowały się 2 wartości FK wskazujące tę samą tabelę. Na przykład w przypadku Billa materiału
@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)
Więc kiedy będziesz mieć dostęp do tych danych można tylko użyć związanej nazwę
bom = material.tomaterial.all().order_by('-creation_time')
To nie działa inaczej (przynajmniej ja nie był w stanie aby pominąć użycie powiązanej nazwy w przypadku 2 FK do tego samego stołu.)
@DanielRoseman Czy korzystanie z funkcji related_name = '+' jest w jakiś sposób dobre dla wydajności lub dobrej praktyki, gdy relacja wstecz nie jest konieczna? – lajarre
Chciałbym poznać odpowiedź na pytanie @ lajarre. – 3cheesewheel
@lajarre - Zakładam, że wcale nie zmieni to wydajności. Musiałem użyć go raz z typami treści FeinCMS. Osobiście uważam, że dobrą praktyką jest zawsze określać "powiązaną nazwę", więc jeśli wiesz, że nie będziesz jej używał, to chyba dobrze. To oczywiście osobista opinia. –