Когда Вы пишете вопрос, в первую очередь думайте, чтобы людям было понятно, а не Вам. Почему люди должны сами допирать, что вообще Вы хотите сделать. Понятнее, пожалуйста, излагайте суть. Короче, Вам нужно выводить список неопубликованных объектов. Понятно. Конечно это можно сделать с помощью обратных связей, так как Вы делаете в цикле for, и лишнюю проверку еще производите. В общем как-то так, я думаю, можно сделать:
result = Post.objects.filter(category=category, publicpost__isnull=True).distinct()
Результат Вы должны получить одинаковый, т.е. такой же, что и выдаст Ваш код:
for item in Post.objects.filter(category=category):
if(PublicPost.objects.filter(post_publick = item).count() == 0):
result.append(item)
return result
Updated 5 Aug. 2016, 12:38 by vadiq.