Django рекомендует не использовать null
для CharField
, однако аннотация содержит пустые строки в счете. Есть ли способ избежать этого, не исключая строки с пустой строкой из запроса?
Мой вопрос заключается не просто в том, как выполнить мой запрос, а в том, должен ли счетчик аннотаций/объединений включать пустые поля или нет. Django считает пустым заменой NULL для строковых полей.
Моя модель:
class Book(models.Model):
name = models.CharField(...)
class Review(models.Model):
book = models.ForeignKey()
category = models.ForeignKey()
review = models.CharField(max_length=200, default='', blank=True)
Чтобы подсчитать непустые отзывы и сгруппировать по категориям, я использую
Review.objects.values('category').annotate(count=Count('review'))
Это не работает, потому что annotate также подсчитывает пустые значения (если бы запись была NULL, этого бы не произошло). Я мог бы отфильтровать пустые строки перед вызовом аннотации, но мой запрос более сложный, и мне нужны все пустые и непустые объекты.
Есть ли более разумный способ использовать аннотировать и пропускать пустые значения из подсчета или мне следует изменить модель с
review = models.CharField(max_length=200, default='', blank=True)
to
review = models.CharField(max_length=200, default=None, blank=True, null=True)
I could filter out empty strings before the annotate call but my Query is more complex and I need all empty & non-empty objects
- person user   schedule 25.05.2014null=True
вам не поможет. Вы должны использовать необработанный SQL-запрос docs.djangoproject.com/en/dev/topics /дб/sql - person Sławek Kabik   schedule 25.05.2014