I've read the docs. I've read this question too, but the following code is not working as the Django docs describe.
# people.models from django.db import models class Person(models.Model): name = models.CharField(max_length=255) friends = models.ManyToManyField("self", through='Friendship', through_fields=('personA', 'personB'), symmetrical=True, ) def __str__(self): return self.name class Friendship(models.Model): personA = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='personA') personB = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='personB') start = models.DateField(null=True, blank=True) end = models.DateField(null=True, blank=True) def __str__(self): return ' and '.join([str(self.personA), str(self.personB)])
>>> import django
>>> django.__version__
'3.1.2'
>>> from people.models import Person, Friendship
>>> bill = Person(name='bill')
>>> bill.save()
>>> ted = Person(name='ted')
>>> ted.save()
>>> bill_and_ted = Friendship(personA=bill, personB=ted)
>>> bill_and_ted.save()
>>> bill.friends.all()
<QuerySet [<Person: ted>]>
>>> ted.friends.all()
<QuerySet []>
>>> ted.refresh_from_db()
>>> ted.friends.all()
<QuerySet []>
>>> ted = Person.objects.get(name='ted')
>>> ted.friends.all()
<QuerySet []>
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/MJmh5Qw--3-2%40tutanota.com.
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=255)
friends = models.ManyToManyField("self", symmetrical=True)
def __str__(self):
return self.name
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/f1b39d06-6100-4b6c-94a5-1ec60fa45f80n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/A978B24A-1041-4850-AABA-224F2EFD2E9E%40uniquode.io.
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=255)
friends = models.ManyToManyField("self", through='Friendship', symmetrical=True)
def __str__(self):
return self.name
class Friendship(models.Model):
person_a = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='a')
person_b = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='b')
start = models.DateField(auto_now_add=True)
def __str__(self):
return f'{self.person_a.name} => {self.person_b.name}: {self.start}'