Makemigrations не относится к параметру to_field, когда ForeignKey ссылается на первичный ключ без идентификатора - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь добавить модель UserFilter с внешним ключом modelgroup, указывающим на таблицу Modelgroup, которая не имеет стандартного поля идентификатора.

class Modelgroup(models.Model):
    modelgroup = models.CharField(max_length=64, primary_key=True, db_column='modelgroup')


class UserFilter(models.Model):
    user = models.ForeignKey(User, models.DO_NOTHING)
    modelgroup = models.ForeignKey(Modelgroup, models.DO_NOTHING, \
         to_field='modelgroup', db_column='modelgroup')

Когда я запускаю manage.py makemigrations в этом коде я получаю

operations = [
        migrations.CreateModel(
            name='UserFilter',
            fields=[
                ...
                ('modelgroup', models.ForeignKey(db_column='modelgroup', on_delete=django.db.models.deletion.DO_NOTHING, to='core.Modelgroup')),
                ...
            ],
        ),
    ...   
    ]

В котором отсутствует параметр to_field. И когда я запускаю manage.py migrate на нем, я получаю

django.db.utils.ProgrammingError: column "id" referenced in foreign key constraint does not exist

Важно

Когда я заменяю primary_key=True на unique=True, параметр to_field работает как ожидается.

Есть мысли?

...