Как получить все данные (записи), которые ищутся (например: мы получаем slug из frontend), с последней датой обновления.
класс А: некоторые поля класс B: user = models.ForeignKey(User, **CASCADE, related_name='sessions') DEVICES = ( ('android', 'android'), ('ios', 'ios') )
Мы создаем приборную панель для front end и есть поле поиска, пользователь должен ввести тип_устройства и мы используем для поиска записей, которые используют только IOS или Android.
В этом случае записи хранятся в таких полях как,
Created_at, updated_at, device_type, user_id...
Теперь нам нужно применить два фильтра:
- searched_key : ios или android
- latest_device_type : только последняя обновленная_запись
Я сделал так :
User.objects.filter(Q(id=user_details['id']) & Q(sessions__device_type=self.search_key) & Q(reduce(or_, self.query_filter))).order_by('sessions__user_id', '-sessions__created_at').distinct('sessions__user_id').
values('id', 'sessions__device_type', 'first_name')
Но я не получаю точного результата: даже я пробовал [0] помещая это после order_by и latest() и first() метод будет получать только одну запись, так что любой 1 имеет лучшее решение для этого. Примечание: если кто-то пытается объяснить с помощью Prefetch, пожалуйста, объясните с ясностью.