Здравствуйте! Помогите пожалуйста разобраться.
У меня есть следующая модель данных.
models.py:class Securities(models.Model):
section = models.ForeignKey(Section)
characteristic = models.ForeignKey(Characteristics)
bool_value = models.NullBooleanField()
change_date = models.DateTimeField()
real_change_date = models.DateTimeField()
У примеру в таблице есть такие записи:
SECTION | CHARACTERISTIC | CHANGE_DATE | BOOL_VALUE
A | 8328 | 15.02.2018 | 1
A | 8328 | 02.09.2018 | 0
B | 8328 | 02.09.2018 | 1
C | 8328 | 02.09.2018 | 1
C | 8328 | 20.09.2018 | 0
Я пытаюсь отфильтровать подобную таблицу:
SECTION | CHARACTERISTIC | CHANGE_DATE | BOOL_VALUE
C | 8328 | 20.09.2018 | 0
B | 8328 | 02.09.2018 | 1
A | 8328 | 02.09.2018 | 0
То есть отфильтровать записи таким образом, чтобы у похожих записей брались лишь та у которой ближайшая дата.
Я попытался сделать следующее:
securities = Securities.objects.filter(characteristic=8328).order_by('-change_date').values_list('section').distinct()
Данный код возвращается 36 записей, и записи все равно дублируются. То есть есть две записи A. Хотя нужно оставить одну. При этом когда я пишу
print(securities.count())
мне пишет количество 33. Что вообще происходит. Как решить данную проблему, друзья?