使用 if 语句检查内容类型以确定要做什么

Check content type with if statement to determine what to do

我有一个关联了通用关系的 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)
    ...

在一个视图函数中,我试图找出 TitleJobPosition 之间的哪个模型与特定的 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)