Django sẽ mặc định order dữ liệu theo kiểu dữ liệu của cột. Nhưng nếu bạn có cột dữ liệu số nhưng lại đặt là kiểu text trong DB mà bạn vẫn muốn order theo dạng số thì hãy áp dụng hướng dẫn dưới đây.
Sử dụng hàm extra và order như dưới đây
1 2 3 |
MyModel.objects.extra( select={'myinteger': 'CAST(mycharfield AS INTEGER)'} ).order_by('myinteger') |
Nếu bạn sử dụng order trong django-table2 thì hãy sự dụng đoạn code dưới đây
1 2 3 4 5 |
def order_code(self, queryset, is_descending): queryset = queryset.extra( select={'codeint': 'CAST(backend_license.code as UNSIGNED)'} ).order_by(("-" if is_descending else "") + "codeint") return (queryset, True) |
Chúc các bạn thành công!
Mình là một lập trình viên tự do với hơn 10 năm kinh nghiệm. Mình chuyên về Web scraping, Web automation, Python, Django