Возможно ли иметь ссылку на модель многих других моделей в зависимости от ситуации в django?

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

У меня есть три приложения с их собственными моделями с уважением. Приложение1, Приложение2, Приложение3. Я хочу создать новое приложение (отчеты), которое будет сообщать о каждом из моих других приложений (App1, App2, App3). С моими текущими знаниями у меня есть следующее в моих отчетах models.py

class Reports(models.Model):
    name = models.CharField(max_length=150, blank=True)

    app1_reported = models.ForeignKey(
        App1, on_delete=models.CASCADE, related_name='reported_app1', blank=True)

    app2_reported = models.ForeignKey(
        App2, on_delete=models.CASCADE, related_name='reported_app2', blank=True)

    app3_reported = models.ForeignKey(
        App3, on_delete=models.CASCADE, related_name='reported_app3', blank=True)

Есть ли способ создать в моей модели отчетов одну ссылку, которая могла бы ссылаться либо на App1, либо на App2, либо на App3? что-то типа:

class Reports(models.Model):
    name = models.CharField(max_length=150, blank=True)

    reported = models.ForeignKey(
        App1 or App2 or App3, on_delete=models.CASCADE, related_name='reported_app_is', blank=True)

Мое приложение отлично работает с первой реализацией, я просто хотел бы знать, есть ли лучший способ. Также, пожалуйста, дайте мне знать, если это имеет смысл, я борюсь с правильной формулировкой.


person FlawlessCalamity    schedule 14.01.2021    source источник
comment
Насколько я понимаю, у вас есть три приложения, в каждом из которых есть модель с одинаковым именем?   -  person Guillaume    schedule 14.01.2021
comment
@BriseBalloches да, сэр, это правильно.   -  person FlawlessCalamity    schedule 14.01.2021
comment
Это может помочь вам stackoverflow.com/a/881874/4151233   -  person Marco    schedule 14.01.2021
comment
Спасибо @Marco, я проверил ссылку, и мне удалось заставить ее работать в определенной степени. Я также проверяю документы, предложенные в посте, а также предложенные Абдулом ниже. Однако я не могу получить ссылку на отношение в моей модели. При использовании fields.GenericRelation(Faves) в соответствии с сообщением, но, очевидно, относящимся к моему приложению, а также просматривая документы в соответствии с тем, что они предлагают. В админке не отображается. Любые идеи?   -  person FlawlessCalamity    schedule 17.01.2021
comment
@FlawlessCalamity, что не отображается в админке, можете уточнить?   -  person Abdul Aziz Barkat    schedule 17.01.2021
comment
@AbdulAzizBarkat, поэтому в моем приведенном выше примере в интерфейсе администратора, если я просматриваю App1, App2 или App3, поля не отображают связь с отчетами.   -  person FlawlessCalamity    schedule 17.01.2021
comment
@FlawlessCalamity App1, App2 или App3 не указывают на отчет, отчет указывает на них.   -  person Abdul Aziz Barkat    schedule 17.01.2021
comment
@AbdulAzizBarkat, но не создаст ли отношение внешнего ключа связанное имя в модели приложения, указывающее на конкретный отчет?   -  person FlawlessCalamity    schedule 18.01.2021


Ответы (1)


Вы можете использовать структуру типов контента. Вот ссылка для справки.

person Abdul Aziz Barkat    schedule 14.01.2021
comment
Большое спасибо, пожалуйста, посмотрите мой комментарий выше к @Marco, возможно, у вас есть идея? - person FlawlessCalamity; 17.01.2021