Django выбирает объекты базы данных на основе предыдущего запроса - PullRequest
1 голос
/ 20 августа 2011

В настоящее время я работаю над проектом, в котором есть один из следующих способов в стиле твиттера, и я не смог понять, как выбирать «посты» в базе данных, основываясь на том, за кем следит пользователь.

Я использую пользовательскую функциональность по умолчанию, а затем это моя следующая модель:

class Following(models.Model):
    user = models.ForeignKey(User, related_name="user")
    following = models.ForeignKey(User, related_name="following")

и модель моих сообщений:

class Post(models.Model):
    title = models.CharField(max_length=100)
    text = models.TextField()
    user = models.ForeignKey(User)
    date_time = models.DateTimeField(auto_now=True)

Наконец, фрагмент из моего представлениячто я пытаюсь добраться до работы:

def home(request):
    following = Following.objects.filter(user=request.user)
    posts = Post.objects.filter(/*not sure what to put here*/)

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

если есть что-то, на что вам может понадобиться посмотреть, что я не разместил здесь, репозиторий github для этого проекта находится здесь

Ответы [ 2 ]

2 голосов
/ 21 августа 2011

Мой django становится ржавым, но здесь идет:

posts = Post.objects.filter(user__following__user=request.user)
0 голосов
/ 21 августа 2011
from django.db import transaction

@transaction.commit_manually
def get_posts(following):
    posts = []
    for f in following:
        posts.append(Post.objects.filter(user=f))
    transaction.commit()
    return posts

def home(request):
    following = Following.objects.filter(user=request.user)
    posts = get_posts(following)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...