django datetimefield过滤器无法正常工作

时间:2017-09-28 09:36:10

标签: python mysql django django-forms django-views

我试图从mysql表中过滤日期。如果我没有把日期过滤器...我的搜索表单工作正常...当我把那个日期过滤器它基本上失败了form.is_valid()语句。 没有过滤器 created_at ,它工作正常 我已经尝试了 created_at 的所有过滤器类型 其中一些给出了这个错误,另一个没有给出错误,但是,搜索过滤器都没有给出任何结果......

这是我得到的错误:

ValueError: Cannot use None as a query value

forms.py

class AllTablesForm(forms.Form):
    title = forms.CharField(label='', max_length=250, required=False,
                            widget=forms.TextInput(attrs={'placeholder': 'Title'}))
    url = forms.CharField(label='', max_length=250, required=False,
                          widget=forms.TextInput(attrs={'placeholder': 'Url'}))
    description = forms.CharField(label='', required=False,
                                  widget=forms.TextInput(attrs={'placeholder': 'Description'}))
    created_at = forms.DateTimeField(label='', required=False,
                                     widget=forms.TextInput(attrs={'placeholder': 'Created At'}))

我在哪里搜索表单 views.py

def search_form_table(request, pk):
    table_name = Crawledtables.objects.get(id=pk)
    t = create_model(table_name.name)

    if request.method == 'GET':
        form = AllTablesForm(request.GET)
        if form.is_valid():
            cd = form.cleaned_data
            title = cd['title']
            url = cd['url']
            description = cd['description']
            created_at = cd['created_at']
            # print created_at
            query = t.objects.filter(title__icontains=title,
                                     url__icontains=url,
                                     description__icontains=description,
                                     created_at__gte=created_at)
            return render(request, 'search/search_table.html', {'tbl_name': table_name,
                                                                'form': form,
                                                                'details': query})

        else:
            form = AllTablesForm()
        return render(request, 'search/search_table.html', {'form': form})

现在我有 created_at__gte ,我得到了这个错误。它基本上说我的 form.is_valid()无效。

例如:如果我输入 created_at__exact ,我就不会收到任何错误...但我的搜索无效...我没有看到任何结果......而我的其他过滤器都没有工作。

如果我从过滤器中取出 created_at ...搜索过滤器有效,它会给我结果。

请帮帮我。谢谢

ADDED

哦差点忘了。列出字段时显示的日期格式为: 的 九月19,2017,11:12 a.m。

mysql created_at列中的格式为: 2017-09-08 12:16:38

我确实希望创建类似phpmyadmin过滤器的过滤器。 弹出窗口并显示日历以选择日期和时间范围。

0 个答案:

没有答案