﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
32310	Clarify ManyToManyField.through note about reverse accessors names for non-symmetrical recursive relationships.	Fabio Sangiovanni	Fabio Sangiovanni	"Hello and happy new year everyone!

A note in the current `ManyToManyField.through` docs (https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through) suggests that:

> Recursive relationships using an intermediary model and defined as symmetrical (that is, with symmetrical=True, which is the default) can’t determine the reverse accessors names, as they would be the same.

But the value of the `symmetrical` argument seems irrelevant in this regard, since in both cases (`True` or `False` value) the system checks framework raises the same error (`fields.E304`).

Repro:


{{{
from django.db import models


class Relationship(models.Model):
    person1 = models.ForeignKey('Person', on_delete=models.CASCADE)
    person2 = models.ForeignKey('Person', on_delete=models.CASCADE)


class Person(models.Model):
    other = models.ManyToManyField('self', through=Relationship, symmetrical=False)
}}}

`manage.py makemigrations` yields:

{{{
SystemCheckError: System check identified some issues:

ERRORS:
app.Relationship.person1: (fields.E304) Reverse accessor for 'Relationship.person1' clashes with reverse accessor for 'Relationship.person2'.
	HINT: Add or change a related_name argument to the definition for 'Relationship.person1' or 'Relationship.person2'.
app.Relationship.person2: (fields.E304) Reverse accessor for 'Relationship.person2' clashes with reverse accessor for 'Relationship.person1'.
	HINT: Add or change a related_name argument to the definition for 'Relationship.person2' or 'Relationship.person1'.
}}}

for both values of the `symmetrical` argument of `ManyToManyField`.


Am I missing something?

Thanks!"	Cleanup/optimization	closed	Documentation	dev	Normal	fixed			Accepted	1	0	0	0	1	0
