Фильтр потока активности 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')