Джанго "график" - PullRequest
       3

Джанго "график"

1 голос
/ 27 июня 2010

Я хочу создать «временную шкалу», содержащую все сообщения мини-блога от пользователя и всех пользователей, за которыми он следует.Я хочу, чтобы все эти посты были упорядочены по дате. Но как я могу «присоединиться» к постам, потому что отношение «нижеследующее» находится в другой таблице, поэтому мне нужно сделать какое-то соединение между двумя таблицами, чтобыданные.

На данный момент в моей «временной шкале» отображаются только записи в блоге владельца блога, и я использую запрос типа:

     blog = New.objects.filter(created_by = request.user) 

, но я хочуприсоединяться к сообщениям с сообщениями людей, за которыми он следует, что означает:

    following = Relations.objects.filter(initiated_by = request.user)

, где «Отношения» - это таблица «Следуйте отношениям».

Как я могу это сделать?

Мои модели:

class New(models.Model):
post = models.CharField(max_length=120)
date = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User, blank=True) 
objects = NewManager()   


class Relations(models.Model):
initiated_by = models.ForeignKey(User, editable=False, related_name = 'initiator')
date_initiated = models.DateTimeField(auto_now=True, editable = False)
follow = models.ForeignKey(User, editable = False, related_name = "follow") 
date_follow = models.DateTimeField(auto_now=True, editable = False)

1 Ответ

2 голосов
/ 27 июня 2010

Может быть что-то вроде (используя Q объектов ):

blogs = New.objects.filter(Q(created_by = request.user) | Q(relations_set__initiated_by = request.user))

Предполагается, что у вас есть внешний ключ от Relations до New. См. документацию о следующих отношениях в обратном направлении .

Если ваша модель Relations не имеет внешнего ключа для New, но имеет внешний ключ к таблице пользователей, скажем following = models.ForeignKey(User), то вы можете сделать что-то вроде

blogs = New.objects.filter(Q(created_by = request.user) | Q(created_by__follow__initiated_by = request.user))

Теперь ваш внешний ключ от модели Relations к модели пользователя должен иметь related_name = 'follow'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...