Próbuję zrobić prostą funkcjonalność "podążają" w Django, jak więc (przy okazji, nie używam django.contrib.auth, jeśli to ma znaczenie):

class User(models.Model):
     followers = models.ManyToManyField('self')
     # rest of code

Przetestowałem to na mojej stronie z dwoma użytkownikami, użytkownikiem X i użytkownikami Y ... ale kiedy użytkownik X jest dodawany do obserwujących użytkowników Y, użytkownik Y jest również dodany do obserwujących użytkowników X, które nie było zamierzonym wynikiem. Jak mogę zrobić to jednostronny związek? czy robię coś źle?

1
Amit 13 sierpień 2012, 03:04

2 odpowiedzi

Najlepsza odpowiedź

Domyślnie, referencyjny ManyToManyField jest symetryczny. Zobacz Poniżej w dokumentach :

... ManyToManyField zakłada się, że jest symetryczny - to jest, jeśli jestem twoim Przyjaciel, jesteś moim przyjacielem.

Jeśli nie chcesz symetrii w wielu relacjach z siebie, ustaw symetryczny na false. Spowoduje to wymusić Django, aby dodać deskryptor do relacji odwrotnej, umożliwiając niezmienione relacje Manetomanyfield.

1
Hamish 12 sierpień 2012, 23:09

Musisz dokonać relacji asymetryczne .

1
Ignacio Vazquez-Abrams 12 sierpień 2012, 23:09