﻿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
33366	Migration autodetector doesn't handle placeholders in related_name for ForeignKey.	Andrew Chen Wang	Simon Charette	"We have a model in a package called [django-oauth-toolkit](https://github.com/jazzband/django-oauth-toolkit/blob/0204383f7b6f8739322f2009f2bb25e8ac9bced2/oauth2_provider/models.py#L78)

Our model for reproduction:

{{{
class RefreshToken(models.Model):
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name=""%(app_label)s_%(class)s""
    )

}}}


Users of the package are running `makemigrations` and having to see something like this (ref: https://github.com/jazzband/django-oauth-toolkit/issues/1037):

{{{
migrations.AlterField(
            model_name='refreshtoken',
            name='user',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to='auth.user'),
        ),
}}}

Specifically, `to='auth.user'` is the issue. Our previous migrations properly had `to=settings.AUTH_USER_MODEL`. Please let me know how to fix this or whether this is a bug. As noted in that linked issue, it might be due to https://docs.djangoproject.com/en/4.0/releases/4.0/#migrations-autodetector-changes, and if this functionality is intended, then how can packages... avoid this?

Thanks!"	Bug	closed	Database layer (models, ORM)	4.0	Release blocker	fixed		Keryn Knight David Wobrock Simon Charette	Ready for checkin	1	0	0	0	0	0
