from django.db.models import F from django.db.models.functions import Coalesce def category_ordering(prefix='', excel=False): field = F(prefix + 'order_cat') if excel: field = Coalesce(prefix + 'excel_order', prefix + 'order_cat') return (field.asc(nulls_last=True), prefix + 'name', prefix + 'pk') def product_ordering(prefix='', excel=False): field = F(prefix + 'order_prd') if excel: field = Coalesce(prefix + 'excel_order', prefix + 'order_prd') return category_ordering(prefix + 'category__', excel) + ( field.asc(nulls_last=True), prefix + 'name', prefix + 'pk', )