Я использую специфичный для postgres агрегатор Django ArrayAgg
.Это работает нормально, но когда список пуст, я получаю [None]
вместо []
.Есть ли способ отфильтровать эти нулевые значения?Я пытался передать аргумент фильтра на ArrayAgg
, но это не сработало.Вот упрощенный пример моей установки:
class Image(models.Model):
# ...
class Reporter(models.Model):
# ...
class Article(models.Model):
reporter = models.ForeignKey(Reporter, related_name='reporters')
featured_image = models.ForeignKey(Image, related_name='featured_images')
# ...
Тогда, если я сделаю этот запрос:
reporter = Reporter.objects.annotate(
article_images=ArrayAgg('articles__featured_image'),
distinct=True
).first()
И у первого репортера в наборе результатов нет связанной статьи, яget:
> reporter.article_images
[None]
Я пытался добавить фильтр, но не повезло:
Reporter.objects.annotate(
article_images=ArrayAgg(
'articles__featured_image',
filter=Q(articles__featured_image__isnull=False)
)
)