То, как вы уже это делаете, - лучший способ.
Если это не зависящий от модели способ, который вы ищете, не забывайте, что вы можете сделать query.exclude(pk=instance.pk)
.
Так же, как в стороне, , если ORM Джанго имел картографическое устройство идентификации (чего в настоящее время нет), то вы могли бы сделать что-то вроде MyModel.objects.filter(<query>).all().remove(<instance>)
, но выне повезло в этом отношении.То, как вы это делаете (или тот, что выше), - лучшее, что у вас есть.
О, а также вы можете сделать намного лучше, чем этот запрос in
со списком: query.exclude(id__in=[o.id for o in <unwanted objects>])