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.