Изменение внешнего ключа на основе изменяющихся входных данных
Я создал инструмент обзора для различных систем, чтобы менеджеры могли просматривать текущий доступ своих сотрудников к этим системам. Он работает на основе каждой кампании, где команда, управляющая этим доступом, выбирает конкретную систему при запуске кампании. У меня есть модель проверки, которая связана с кампанией, менеджером, выполняющим проверку, сотрудником, которого проверяют, а также учетной записью сотрудника, которую проверяют. Однако в настоящее время мне приходится жестко кодировать внешние ключи следующим образом
acsAcct = models.ForeignKey('acsUser', null=True, blank=True, on_delete=models.CASCADE)
iseAcct = models.ForeignKey('iseUser', null=True, blank=True, on_delete_models.CASCADE)
...
Это создает проблему, когда я пытаюсь динамически создать экземпляры обзора с помощью метода класса createReview. В настоящее время мне приходится добавлять учетную запись к обзору позже, проверяя систему кампании, а затем переходя к соответствующей модели и находя учетную запись пользователя. Я бы предпочел иметь возможность делать это, когда я создаю обзор.
По сути, я хотел бы сделать что-то вроде:
systemAcct = models.ForeignKey(?, null=True, blank=True, on_delete=models.CASCADE)
# Then my create method
@classmethod
def createReview(cls, **kwargs):
review = cls.objects.get_or_create(
campaign = kwargs['campaign'],
manager = kwargs['manager'],
employeeReviewed = kwargs['employeeReviewed'],
reviewer = kwargs['reviewer'],
systemAcct = kwargs['systemAcct'],
)
Я хочу, чтобы передаваемый в функцию ключ systemAcct указывал внешнему ключу systemAcct, какую модель использовать. Можно ли это как-то сделать?