#django #django-queryset
#django #django-набор запросов
Вопрос:
Я хочу реализовать пользовательский сервер упорядочивания (используя rest_framework.filters.OrderingFilter) и я в основном хочу сначала проверить, существует ли поле для моего набора запросов, прежде чем фильтровать его без оценки набора запросов.
что-то вроде
if queryset.is_available_field(my_field):
queryset = queryset.order_by(my_field)
Я не могу попробовать / за исключением того, что я не знаю точно, когда будет оценен мой набор запросов.
Ответ №1:
Я нашел одно решение, которое подходит для моего случая, но может не охватывать некоторые крайние случаи. Также это не очень элегантно.
def has_field(queryset, field):
model_fields = [f.name for f in queryset.model._meta.fields]
annotations = list(queryset.query.annotations.keys())
return field in model_fields annotations
Комментарии:
1. Хотя это не работает при заказе по соответствующему полю