Отношения по внешнему ключу в Django с несколькими моделями

У меня есть много различных моделей с различными типами полей. Я хочу использовать внешний ключ для нескольких моделей. Например:

class Model1(models.Model):
    title = models.TextField()
    body = models.TextField()
    
class Model2(models.Model):
    tag = models.CharField(max_length=200)
    uploadedDate = models.DateTimeField(auto_now_add=True)
    
class MainModel(models.Model):
    
    content = models.ForeignKey([Model1, Model2], on_delete=models.CASCADE) # this will give error

Как я могу это сделать?

models.py

from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey

class MainModel(models.Model):
    
    target_ct = models.ForeignKey(ContentType,
    related_name='target_obj', on_delete=models.CASCADE)
    target_id = models.PositiveIntegerField()
    target = GenericForeignKey('target_ct', 'target_id')

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

model1 = Model1.objects.first() 

Чтобы передать это в вашу MainModel, вы можете просто сделать что-то вроде этого.

   MainModel.objects.create(target=model1)
Вернуться на верх