Как перечислить заданные данные в порядке возрастания. Столбцы "Имя счета" и "Состояние счета"
введите здесь описание изображения
views.py
def listEngagements(request):
active=Engagement.objects.filter(status="Active")
completed=Engagement.objects.filter(status="Completed")
datas_list=active|completed
query = request.GET.get('q')
if query:
datas_list = Engagement.objects.filter(engagementName__contains=query)
paginator = Paginator(datas_list, 20) # 6 datas per page
page = request.GET.get('page',1)
try:
datas = paginator.page(page)
except PageNotAnInteger:
datas = paginator.page(1)
except EmptyPage:
datas = paginator.page(paginator.num_pages)
return render(request,'engagement.html',{'datas':datas,'username':username})
модели
class Engagement(models.Model):
engagementName = models.CharField(default=" ",max_length=100,null=True,blank=True)
engagementValue=models.IntegerField(default=0)
email = models.EmailField(null=True,blank=True)
status = models.CharField(max_length=50,null=True)
class Meta:
ordering =['engagementName']
def __str__(self):
return str(self.engagementName)
html код
<table class="table table-stripped table-hover">
<thead>
<tr>
<th>Account Name</th>
<th>Account Value</th>
<th>Email</th>
<th>Account Status</th>
<th></th>
</tr>
</thead>
<tbody>
{% for i in datas %}
<tr>
<td>{{i.engagementName}}</td>
<td>{{i.engagementValue}}</td>
<td>{{i.email}}</td>
<td>{{i.status}}</td>
<td>
<a href="#editEmployeeModal" class="edit" data-toggle="modal"
onclick="editengagementDetails(
name = '{{i.engagementName}}',
engagement_id = '{{ i.id }}',
email = '{{i.email}}',
status ='{{i.status}}'
);" ><i
class="fa fa-edit" data-toggle="tooltip" title="Edit"></i></a>
<!-- <a href="{% url 'deleteclient' i.id %}" class="delete" ><i
class="fa fa-trash" data-toggle="tooltip" title="Delete"></i></a> -->
</td>
</tr>
{% endfor %}
</tbody>
Вы можете установить порядок при создании набора запросов, используя .order_by('field_name').
Вы можете объединить ваши фильтры включения в одном месте с помощью Q
Например, в верхней части вашего views.py import Q
from django.db.models import Q
Потом, когда вы создадите свои наборы записей
datas_list = Engagement.objects.filter(
Q(status="Active") | Q(status="Completed")
).order_by("engagementName", "status")
Это отсортирует по имени счета, а затем по статусу, например, сначала все активные счета Сьюзан, а затем все завершенные. Вы можете добавить такой же порядок_by в конструкцию набора записей 'if query'.
Если у вас небольшое количество возможных статусов, вы можете избежать использования Q путем цепочки исключений, например,
Engagement.objects.exclude(
status="Incomplete"
).exclude(
status="Inactive"
).order_by("engagementName", "status")