Проверьте тип содержимого с помощью оператора 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)