Django 'временная шкала'

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

На данный момент, в моей 'временной шкале', там появляется только сообщения в блоге владельца блога и меня пользователь запрос как:

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

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

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

где Отношения являются таблицей 'Follow relation'.

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

Мои модели:

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
задан Brian Tompsett - 汤莱恩 14 March 2017 в 18:48
поделиться

1 ответ

Может быть что-то вроде (с использованием объектов 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' .

2
ответ дан 2 September 2019 в 23:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: