2013-03-09 2 views
0
class Photo(models.Model): 
    ...  
    viewsT = models.ManyToManyField('PhotoViewT', symmetrical=False) 
    ... 

class PhotoViewT(models.Model): 
    user = models.ForeignKey(User) 
    creationdate = models.DateTimeField() 

Информация о фотографиях в таблице «Фото» и информация о представлениях в таблице «PhotoViewT» (здесь «пользователь», который наблюдал за фотографией и «созданием», когда он смотрел ее). На «фото» у меня есть поле m2m для просмотров, где я добавляю информацию обо всех представлениях.django Получение неуправляемых товаров

Моя задача - получить фотографии, те, которые не были просмотрены текущим определенным пользователем. Я не знаю, как обрабатывать этот запрос.

Что-то вроде

Photo.objects.filter(viewsT__user__doesnt_contain=targetUser) 

Expression выше, вряд ли работает. Любые решения? Заранее спасибо!

ответ

1

Ref the doc. Попробуйте

Photo.objects.exclude(viewsT__user=targetUser) 
+0

Всё! Благодаря! – Could

0

Photo.photoviewtset.all() доставит вам все PhotoViewT экземпляры, связанные с этим Photo.

Photo.photoviewtset.filter(user=<your_current_user) выведет вас всех PhotoViewT экземпляров, связанных с этим Photo, отфильтрованных вашим current_user.

Примечание: Вам не нужно ManyToManyField в Photo модели для этого

0
Photo.objects.exclude(viewsT__in=PhotoViewT.objects.filter(user=request.user)) 

OR 

Photo.objects.filter(~Q(viewsT__in=PhotoViewT.objects.filter(user=request.user))) 
Смежные вопросы