Фильтр потока активности Django Действия по внешнему ключу в целевой модели

Я хотел бы отфильтровать действия для определенного набора запросов.

К этому моменту я собирал данные, генерируя поток модели на желаемой модели.

model_stream(FillingSystem)

Я хотел бы расширить эту функциональность и иметь что-то вроде этого

model_stream(FillingSystem.objects.filter(client__slug='my-slug')) 

или же

model_stream(FillingSystem.objects.filter(client=Client.objects.get(slug='my-slug'))) 

эта модель выглядит так:

class FillingSystem(models.Model):
    client = models.ForeignKey('accounts.Client')

Как отфильтровать поток по связанному полю слагов?

1 ответ

Решение

Кажется, вы можете просто передать свои фильтры как **kwargs:

model_stream(FillingSystem, filling_system__client__slug='my-slug')

где target это GenericForeignKey к вашему контенту (не стесняйтесь выбирать из других).

Возможно, вам придется объявить обратное отношение к Action модель:

from django.contrib.contenttypes.fields import GenericRelation
from actstream.models import Action

class FillingSystem(models.Model):
    client = models.ForeignKey('accounts.Client')
    stream_actions = GenericRelation(
                         Action,
                         content_type_field='target_content_type'
                         object_id_field='target_object_id'
                         related_query_name='filling_system')
Другие вопросы по тегам