Angularjs 按日期对联系人进行自定义筛选-django rest框架
我有一个表,其中显示有关组织的信息,我有一个机制,触发组织上的下一个操作日期,这是在组织上手动设置的。 现在,我在表的顶部添加了一个自定义datepicker字段,这样我就可以筛选出想要的日期,并在选定的日期显示该组织的所有下一个操作日期,所以我将向Controller传递一个值,这样我就可以捕获restAPI,在剩下的时间里,我想筛选出比现在更早或相等的日期,这样我就可以在下一个行动日期前显示组织。 我的问题是如何过滤日期早于或等于现在,我在这里真的迷路了,所以有人可以帮助我,并解释如何在ModelViewSet中做到这一点 模型视图集:Angularjs 按日期对联系人进行自定义筛选-django rest框架,angularjs,django,django-rest-framework,Angularjs,Django,Django Rest Framework,我有一个表,其中显示有关组织的信息,我有一个机制,触发组织上的下一个操作日期,这是在组织上手动设置的。 现在,我在表的顶部添加了一个自定义datepicker字段,这样我就可以筛选出想要的日期,并在选定的日期显示该组织的所有下一个操作日期,所以我将向Controller传递一个值,这样我就可以捕获restAPI,在剩下的时间里,我想筛选出比现在更早或相等的日期,这样我就可以在下一个行动日期前显示组织。 我的问题是如何过滤日期早于或等于现在,我在这里真的迷路了,所以有人可以帮助我,并解释如何在Mo
from rest_framework import viewsets, permissions, filters
from cms.restapi.pagination import StandardResultsOffsetPagination
from cms_sales.models import LeadContact
from cms_sales.restapi.permissions.lead_contact_permissions import LeadContactPermissions
from cms_sales.restapi.serializers.lead_contact_serializer import LeadContactSerializer
class LeadContactViewSet(viewsets.ModelViewSet):
def get_queryset(self):
queryset = LeadContact.objects.none()
user = self.request.user
if user.has_perm('vinclucms_sales.can_view_full_lead_contact_list'):
queryset = LeadContact.objects.all()
elif user.has_perm('vinclucms_sales.can_view_lead_contact'):
queryset = LeadContact.objects.filter(account_handler=user)
return queryset
serializer_class = LeadContactSerializer
filter_backends = (filters.DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
filter_fields = ('account_handler',)
ordering_fields = (
'first_name', 'last_name', 'account_handler__first_name', 'account_handler__last_name',
'sub_organization_name', 'organization_name', 'next_action_date', 'serial_number',
'next_action_date', 'status_text', 'select_date')
search_fields = (
'first_name', 'last_name', 'account_handler__first_name', 'account_handler__last_name',
'sub_organization_name', 'organization_name', 'next_action_date', 'serial_number',
'next_action_date', 'status_text', 'select_date')
pagination_class = StandardResultsOffsetPagination
permission_classes = [permissions.IsAuthenticated, LeadContactPermissions]
我通过日期选择器字段的位置:
模板:
{% extends "site_base.html" %}
{% load i18n static %}
{% block head_title %}Lead contact list{% endblock %}
{% block ng_app %}cms.sales{% endblock %}
{% block body %}
<div class="grid">
<div class="row">
<h2 class="align-center">
<strong>
{% trans "Contact leads List" %}
</strong>
</h2>
</div>
</div>
<div class="flex-grid"
ng-controller="LeadContactListCtrl"
ng-init="init()">
<div class="row">
<div class="cell size-p20 padding10">
<label for="id_select_date">Select Date: *</label>
<div class="full-size">
<div class="input-control full-size text"
data-role="datepicker" date-format="mmmm d, yyyy">
<input id="id_select_date" ng-model="lead_contact.select_date"/>
<button class="button"><span class="mif-calendar"></span></button>
</div>
</div>
</div>
</div>
<div class="row">
<div class="cell size-p20 padding10">
<button class="button primary" ng-click="SelectLeadContacts()">
{% trans "Submit" %}
</button>
</div>
</div>
<div class="row">
<div class="cell size-p100 padding10">
<table title="Contact leads List" class="dataTable" id="contactLeadsList">
<thead>
<tr>
<th>{% trans 'Serial Number' %}</th>
<th>{% trans 'Lead name' %}</th>
<th>{% trans 'Organization' %}</th>
<th>{% trans 'Sub-organization' %}</th>
<th>{% trans 'Handler' %}</th>
<th>{% trans 'Sale status' %}</th>
<th>{% trans 'Next communication date' %}</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
{% endblock %}
我不确定我是否完全理解了您的要求,但要过滤查询集以仅显示具有未来下一个动作日期的对象,您可以使用:
import datetime
LeadContact.objects.filter(next_action_date__gte=datetime.date.today())
并仅显示具有过去使用日期的日期:
LeadContact.objects.filter(next_action_date__lte=datetime.date.today())
有关按日期筛选查询集的更详细指南,请参阅。特别是,如果下一个_action_date字段的类型是datetime,请使用datetime.datetime.now而不是datetime.date.today。更多信息请参见。好的,谢谢,目前为止,我已经发现lte和gte将帮助我做到这一点,不过我会接受你的回答,因为这很有帮助
LeadContact.objects.filter(next_action_date__lte=datetime.date.today())