﻿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
30571	Incorrect value of kwargs in pre_init signal documentation.	Pratyush Singh	Hasan Ramezani	"I was working on a follower-following system for users.

Model -

{{{
class Follower(models.Model):
    follower = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name='following')
    following = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name='followers')
    follow_time = models.DateTimeField(auto_now=True)

    class Meta:
        unique_together = ('follower', 'following')
}}}

I created this `pre_init` signal (to prevent a user from following self, but details excluded)-
{{{
@receiver(signals.pre_init, sender=user_models.Follower)
def prevent_user_following_self(sender, *args, **kwargs):
    print(kwargs)
}}}

After this, I tried the following in Django shell - 
{{{
>>> import django
>>> django.__version__
'2.2.2'
>>> from django.contrib.auth.models import User
>>> from users.models import Follower
>>> a = User.objects.get(pk=1)
>>> Follower(follower=a, following=a)
{'signal': <django.db.models.signals.ModelSignal object at 0x7f431561dc88>, 'args': (), 'kwargs': {'follower': <User: admin>, 'following': <User: admin>}}
}}}

Here, `kwargs` contains the actual `kwargs` under a nested name. While according to the [https://docs.djangoproject.com/en/2.2/ref/signals/#pre-init documentation], the `print` here should give
{{{
{'kwargs': {'follower': <User: admin>, 'following': <User: admin>}
}}}"	Cleanup/optimization	closed	Documentation	2.2	Normal	invalid	signals		Accepted	1	0	0	0	1	0
