Я пытаюсь подсчитать дневные записи для некоторой модели, но я хотел бы, чтобы счет был сделан только для записей с некоторым полем fk = xy, поэтому я получаю список с днями, когда была создана новая запись, но некоторые может возвращать 0.django annotate count filter
class SomeModel(models.Model):
place = models.ForeignKey(Place)
note = models.TextField()
time_added = models.DateTimeField()
Say Там есть место с именем = "NewYork"
data = SomeModel.objects.extra({'created': "date(time_added)"}).values('created').annotate(placed_in_ny_count=Count('id'))
Это работает, но показывает все записи .. все места.
Пробовал фильтровать, но он не возвращает дней, где не было записи с place.name="NewYork"
. Это не то, что мне нужно.
Можете ли вы показать код с фильтрацией, показать результат и сказать, что вы считаете неправильным? –
@GarethRees 'data = SomeModel.objects.extra ({'created':" date (time_added) "}). Values ('created'). Annotate (place_in_ny_count = Count ('id'))' 'len (data) 'дает 153. Добавление' .filter (place = Place.objects.get (name = 'NewYork')) 'возвращает меньше, поскольку возвращает только дни, когда была создана запись SomeModel с« местом ». Я хочу, чтобы дни без таких записей тоже возвращались. Я хотел бы сделать что-то вроде 'ny_counts = Count ('id' где place = Place.objects.get (name = 'NewYork'))' и get '[{'placement_in_ny_count': 23, 'created': datetime.date (2012,1,12)}, {'placement_in_ny_count': 0, 'created': datetimedate (2012,1,13)} ...] ' – Robert