Django过滤查询

2024-05-08 04:09:31 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的简单观点:

def transaction_list(request):
    current_user = request.user
    month = datetime.date.today().month

    try:
        page = request.GET.get('page', 1)
    except PageNotAnInteger:
        page = 1

    objects = Transaction.objects.filter(user=current_user, date__month=month)
    p = Paginator(objects, 10, request=request)
    transactions = p.page(page)
    return render(request, 'transaction/list.html',
                  {'transactions': transactions})

它显示当月发生的事务列表。 我想添加一个选项来更改显示的事务的月份,但我不知道如何处理这个问题并使其正常工作。应该在一个视野里做吗?也许是模板?如果有什么想法我会很感激的


Tags: todaydatetimedateobjectsrequestdefpagecurrent
1条回答
网友
1楼 · 发布于 2024-05-08 04:09:31

花点时间阅读一些Django文档,因为它们可能被证明是非常有价值的(更不用说它们对于每个可用的版本都非常干净和编写良好)。我会专注于Working With Forms

简而言之,您将把这个月从django模板(可能通过ajax或简单的HTML表单POST)传递到视图,并使用view函数获取POST数据并在查询集中使用它。你知道吗

很难提供一个好的,彻底的答案,因为有不同的方法来做到这一点。你想要阿贾克斯吗?带页面重新加载的简单表单等?你知道吗


好的,这里,详细介绍一下我通常是如何处理POST请求的。这不是经过测试的代码,它只是psuedo代码,但据我所知,应该可以工作,除了一些可能的小错误。但是,它应该让您了解如何在Django中处理ajax请求。你知道吗

这是相当101和花一些时间来阅读文件和运行通过一些早期项目涵盖了这些概念很多我,所以我进入更深入的是不是真正有价值的读者。你知道吗

你知道吗视图.py你知道吗

class change_date_form(forms.Form):
    new_date = forms.DateField()

def change_transaction_date(request):
    #Do some checks to make sure user is authorized to do this
    current_user = ... 
    customer_data = []
    if request.method == 'POST':
       form = change_date_form(request.POST, request.FILES)
       if form.is_valid():
           change_date = form.cleaned_data.get('new_date')
           objects = Transaction.objects.filter(user=current_user, date__month=change_date)
           for i in objects:
               customer_data.append(objects.name)
    response_data = json.dumps(customer_data)
    return HttpResponse(response_data, content_type='application/json')

你知道吗网址.py你知道吗

...
url(r'^change_date_view/', 'module.views.change_transaction_date'),

Jquery查询:

$('button_handler').on('click', function() { 
 var new_date_value = $(date_field_selector).val()
 $.ajax({ 
    url: "/change_date_view/",
    type: "POST",
    data: { 
       new_date: button_handler,
      },
    success:function(data) { 
      //build your html via javascript with response data
       }
 })

})

相关问题 更多 >