У меня есть простая модель с общим внешним ключом:
class Generic(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
Я хотел бы отфильтровать все записи в этой таблице, которые имеют ненулевые content_object
, т. е. отфильтровать все экземпляры Generic
, чьи объекты контента больше не существуют:
Generic.objects.filter(~Q(content_object=None))
Это не работает, за исключением:
django.core.exceptions.FieldError: Поле «content_object» не генерирует автоматическое обратное отношение и поэтому не может использоваться для обратного запроса. Если это GenericForeignKey, рассмотрите возможность добавления GenericRelation.
Добавление GenericRelation
к указанным моделям типов контента не имеет значения.
Любая помощь в том, как этого достичь, будет оценена по достоинству, большое спасибо.
РЕДАКТИРОВАТЬ: я понимаю, что могу каскадировать удаление, однако в моей ситуации это не вариант (я хочу сохранить данные).