Есть таблицы User, Post, UserPost.
class User( models.Model ):
...
class User( models.Model ):
user = models.ManyToManyField( User, through = 'UserPost' )
class UserPost( models.Model ):
user = models.ForeignKey( User )
post = models.ForeignKey( Post )
readed = models.BooleanField( default = False )
Если делать
Post.objects.filter( userpost__user = user )
То запрос получается таким:
SELECT `feeds_post`.`id`, `feeds_post`.`title`, `feeds_post`.`text`, `feeds_post`.`link`, `feeds_post`.`created_at`, `feeds_post`.`author`, `feeds_post`.`feed_id`, `feeds_feed`.`id`, `feeds_feed`.`title`, `feeds_feed`.`url`
FROM `feeds_post`
INNER JOIN `feeds_feed` ON (`feeds_post`.`feed_id` = `feeds_feed`.`id`)
WHERE `feeds_post`.`feed_id` = 14
ORDER BY `feeds_post`.`created_at` DESC LIMIT 10
Соответственно поле userpost.readed можно дернуть в этом запросе. Вопрос в том как?