Opened 11 months ago
Closed 11 months ago
#34897 closed Bug (invalid)
Django's admin UI - `ManyToManyField` with inheritance on the same class -> object shows itself inside the relation
Reported by: | Leon Haffmans | Owned by: | nobody |
---|---|---|---|
Component: | contrib.admin | Version: | 4.2 |
Severity: | Normal | Keywords: | inheritance, ManyToMany |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | yes |
Description
Consider a base class Followable
which is an actual table in the database. Create a User
model, which inherits from Followable
but also contains a ManyToManyField
relating to Followable
called follows
.
Now, when using Django's admin panel, a user will (wrongly) always show up in follows
as reference to itself. This reference has nothing to do with the database, there is no entry in the relation table.
This should serve as a little reproducable example:
class Followable(models.Model): # This is necessary to prevent doubled id name in `User` followable_id = models.BigAutoField(primary_key=True) class User(Followable): alias = models.CharField(max_length=32) follows = models.ManyToManyField(Followable, blank=True, related_name="followed_by") User(alias="foo_user").save() user = User.objects.get(alias="foo_user") assert len(user.follows) == 0
If this is a known issue, I apologize. I wasn't able to find posts addressing this issue.
I'm sorry, I didn't understand the admin UI properly. You can just ignore this.