Django: упаковка приложения с иностранным ключом к settings.AUTH_USER_MODEL

У меня есть приложение, которое я использую во многих своих проектах и хочу его упаковать. Модель в приложении имеет ForeignKey и ManyToManyField в settings.AUTH_USER_MODEL

class LogEntry(models.Model):
    authenticated_user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True,
                                           null=True, related_name='log_entries',
                                           on_delete=models.CASCADE)
    involved_users = models.ManyToManyField(to=settings.AUTH_USER_MODEL, blank=True,
                                            through='LogUsers',
                                            related_name='other_log_entries')

миграции этого приложения в разных проектах относятся к разным пользовательским моделям. Иногда пользовательская модель пользователя ('user', ... to='registry.RdpUser), иногда стандартная django.contrib.auth.models.User.

Возможно ли упаковать приложение с миграцией, которая работает для обоих случаев?

Какой лучший подход для упакованного приложения с внешним ключом к settings.AUTH_USER_MODEL?

Я знаю, что решением было бы использовать GenericForeignKey, но я хотел бы избежать этого.

Несмотря на то, что сгенерированная django миграция указывает на конкретную модель, найденную в settings.AUTH_USER_MODEL

('user', ... to='registry.RdpUser')

Я нашел в django переход на settings.AUTH_USER_MODEL https://github.com/django/django/blob/main/django/contrib/admin/migrations/0001_initial.py

            (
                "user",
                models.ForeignKey(
                    to=settings.AUTH_USER_MODEL,
                    on_delete=models.CASCADE,
                    verbose_name="user",
                ),
            ),

Полагаю, я мог бы просто отредактировать свою миграцию на

('user', ... to=settings.AUTH_USER_MODEL)

перед упаковкой приложения. Я уверен, что это работает, но не тестировал, так как использовал подход GenericForeignKey.

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