/ / Django: načítať všetky neviditeľné príspevky pre používateľa - python, django, django-models

Django: načíta všetky neviditeľné príspevky pre užívateľa - python, django, django-models

Mám dátový model Django takto:

class Post(django.db.models.Model):
text = django.db.models.CharField()

class Seen(django.db.models.Model):
post = django.db.models.ForeignKey(Post)
user = django.db.models.ForeignKey(django.contrib.auth.models.User)

Kde sa snažím sledovať príspevky a ktorí používatelia videli, ktoré príspevky. Ako môžem získať všetky príspevky, ktoré daný používateľ nevidel?

odpovede:

0 pre odpoveď č. 1

Použitie vylúčenia:

unseen_posts = Post.objects.exclude(seen__user=user)

Kde user je a django.contrib.auth.models.User prípadne objekt request.user, ak používate middleware.

Na seen__user reťazec prechádza dozadu pozdĺž forignKey medzi Post a Seena potom vpred po foreignKey medzi Seen a User.


0 pre odpoveď č. 2

Zvážte nasledujúce skutočnosti:

seen = Seen.objects.select_related("post").filter(user=request.user)
if post not in [x.post for x in seen]:
#do what you need

Poznač si to "Select_related" je tu iba vylepšenie výkonu.