使用 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)
...
在一个视图函数中,我试图找出 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)
我有一个关联了通用关系的 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)