﻿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
32515	m2m_changed signal not received with custom through model	leon hughes	nobody	"Consider the following models:

{{{
class Game(models.Model):

    participants = models.ManyToManyField(
        to='card_users.UserProfile',
        related_name='card_games',
        through='cardgame.GameThroughModel',
    )


class GameThroughModel(models.Model):

    game = models.ForeignKey(
        to='card_game.Game',
        on_delete=models.CASCADE,
    )
    participant = models.ForeignKey(
        to='card_users.UserProfile',
        on_delete=models.CASCADE,
    )


class UserProfile(models.Model):
    user = models.OneToOneField(
        to=settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='profile',
    )
}}}

I have a receiver set up to perform further actions when new participants are added using m2m_changed:

{{{
@receiver(m2m_changed, sender=Game.participants.through, dispatch_uid='create_initial_round', weak=False)
def create_initial_round(sender, instance, action, **kwargs):
    print(f""{sender}, {instance}, {action}"")
}}}

The m2m_changed signal is not received. When a standard manytomany model relation is used ie.:
{{{
class Game(models.Model):

    participants = models.ManyToManyField(
        to='card_users.UserProfile',
        related_name='card_games',
    )
}}}
the signal is received correctly."	Bug	closed	Database layer (models, ORM)	2.2	Normal	invalid	m2m_changed, signal, custom model,		Unreviewed	0	0	0	0	0	0
