Pochodzę z tła Rails i mam problem z wykorzystaniem "metod asocjacyjnych" dostarczonych w Django. Mam dwa modele (które zostały uproszczone dla zwięzłości), tak jak poniżej:Jak korzystać z "odwrotności" relacji Django ManyToMany?
class User(models.Model):
username = models.CharField(max_length=100, unique=True)
companies = models.ManyToManyField('Company', blank=True)
class Company(models.Model):
name = models.CharField(max_length=255)
Zgodnie z dokumentacją Django:
„To nie ma znaczenia, który model ma ManyToManyField, ale powinieneś umieścić go tylko w jednym z modeli - nie oba. ".
Więc rozumiem, że jeśli mam instancję użytkownika, wywoływany użytkownik, mogę zrobić:
user.companies
Moje pytanie brzmi jak to zrobić na odwrót? Jak zdobyć wszystkich użytkowników należących do instancji firmy, powiedzmy firma:
company.users # This doesn't work!
Jaka jest konwencja w tym celu? Dokumentacja, którą przeczytałem, tak naprawdę nie obejmuje tego. Potrzebuję stowarzyszenia, by działało w obie strony, więc nie mogę po prostu przenieść go z jednego modelu do drugiego.
Idealne rozwiązanie, dzięki za szybką odpowiedź. –
+1 dla related_name. Zawsze * nienawidził * składni "model_set". To takie brudne uczucie. –
Myślę, że to mi się podoba. Nie jest trudno wywnioskować odpowiednią relację wstecz w oparciu o nazwy klas. Nazwa related_name znacznie ułatwia pracę z nim. –