Проверьте тип содержимого с помощью оператора if, чтобы определить, что делать

У меня есть модель django с ассоциированным родовым отношением.

class SectionLine(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    ...
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.UUIDField( default=uuid.uuid4, editable=True)
    content_object = GenericForeignKey('content_type', 'object_id')

По большей части, родовые отношения связаны с одной из этих двух моделей

class Title(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title_name = models.CharField(max_length=40)
    ....


class JobPosition(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    ...

В функции представления я пытаюсь выяснить, какая модель между Title и JobPosition связана с конкретным экземпляром SectionLine, чтобы определить, что делать дальше.

Теперь я могу получить доступ к SectionLine.content_type, чтобы увидеть тип содержимого (например, он печатает titles_and_names | title - имя приложения titles_and_names), но я не знаю, с чем его сравнить...

в основном, if SectionLine.content_type == ???

Вы можете использовать ContentType.objects.get_for_model для сравнения https://docs.djangoproject.com/en/3.2/ref/contrib/contenttypes/#django.contrib.contenttypes.models.ContentTypeManager.get_for_model

if SectionLine.content_type == ContentType.objects.get_for_model(Title)

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