Django-registration-redux и ложная миграция из DEFAULT_AUTO_FIELD BigAutoField

Я установил django-registration-redux 2.11 в Django 4.1.6.

Когда я запускаю makemigrations, он делает миграцию для изменения поля id на BigAutoField:

# Generated by Django 4.1.6 on 2023-02-03 19:33

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ("registration", "0005_activation_key_sha256"),
    ]

    operations = [
        migrations.AlterField(
            model_name="registrationprofile",
            name="id",
            field=models.BigAutoField(
                auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
            ),
        ),
    ]

Я подозреваю, что это потому, что DEFAULT_AUTO_FIELD теперь BigAutoField, начиная с Django 3.2, см. здесь.

Однако, он создает миграцию в моем virtualenv, а не под контролем исходного кода:

$ ./manage.py makemigrations
Migrations for 'registration':
  .venv/lib/python3.10/site-packages/registration/migrations/0006_alter_registrationprofile_id.py
    - Alter field id on registrationprofile

Так что ничего хорошего из этого не выйдет.

Я не хочу менять DEFAULT_AUTO_FIELD на AutoField. Я просто хочу изменить его для django-registration-redux?

Я вижу, что регистрация уже есть default_auto_field = 'django.db.models.AutoField', поэтому я озадачен, почему Django делает этот переход.

Я попробовал добавить свой собственный registration/apps.py в контроль исходного кода с default_auto_field в качестве AutoField, и это не сработало.

Предложения?

Возможно, мне просто придется перейти на django-allauth или вернуться на django-registration, как они предлагают .

Я вижу, что регистрация уже имеет default_auto_field = 'django.db.models.AutoField', поэтому я озадачен, почему Django делает этот переход.

Причина, по которой default_auto_field скорее всего не будет работать, заключается в том, что она определена в model, а не в конфигурации приложения.

Я пробовал добавлять свои собственные registration/apps.py в контроль исходного кода с default_auto_field как AutoField, и это не сработало.

Это будет работать... на вашем приложении registration, так что модели определены в этом приложении, а не в других приложениях.

Likely the best way to fix this is to fix it on the package itself, by specifying an AppConfig that then defines, for the scope of that package, the default_auto_field. I submitted a pull request (#431) [GitHub] for this.

Вернуться на верх