Как получить объект связанный через GenericForeignKey
Предположим у меня есть такие модели:
class FirstType(models.Model):
pass
class SecondType(models.Model):
pass
class Comment(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
Затем создаю экземпляр класса Comment, ссылающийся на FirstType.
Как мне через объект FirstType получить все Comment связанный с ним через GenericForeignKey?
*Comment не должен быть связан напрямую с FirstType и SecondType
Ответы (2 шт):
Зависит от того какая стоит перед вами задача.
Если вам нужен queryset, то используйте select_related() https://django.fun/tutorials/select_related-i-prefetch_related-v-django/
queryset = FirstType.objects.select_related('content_type').all()
Если в шаблоне HTML
{% for _ in firsttype.comment_set.all %}
На утро нашел ответ на свой вопрос в документации. Нужно использовать поле GenericRelation в моделях на которые ссылается GenericForeignKey
class FirstType(models.Model):
comments = GenericRelation('Comment')
class SecondType(models.Model):
comments = GenericRelation('Comment')
Далее пользоваться полем comments как обычным queryset