Django使用通用列表视图过滤器验证用户输入

时间:2017-06-28 08:44:37

标签: django validation django-forms django-views django-queryset

所以我基于通用列表视图制作了一个非常简单的过滤器。我使用“GET”从searchfield / filterfield中检索用户输入。

我想在models.Delivery中的“arrival_date”过滤我的数据,这是一个DateField。所以这个过滤器可以工作,但任何给定的数字都会与“arrival_date”

的内容进行比较

我想要做的是验证用户输入,它只能包含数字和字符“ - ”或“/”。除了字符,我还想说查询需要至少四位数作为有效输入。

在常规表单中,我使用“clean_arrival_date”来使用任何验证,但我需要按正确的方向推动应用此列表视图中所需的相同类型的验证...

感谢您的帮助,

凯文

下面; views.py包含使用query_set

的覆盖列表视图
    #views.py    

    """
    Date selector based on ListView
    """

    from django.views.generic import ListView

    from .models import Delivery

    class DeliveryDateListView(ListView):
        model = Delivery
        template_name = 'data/deliveries_by_date.html

        def get_queryset(self):
            # Fetch the queryset from the parent get_queryset
            queryset = super(DeliveryDateListView, self).get_queryset()

            # Get the data GET parameter
            date = self.request.GET.get("date")
            if date:
                # Return a filtered queryset
                return queryset.filter(arrival_date__icontains=date)
            # Return the base queryset
            return queryset

1 个答案:

答案 0 :(得分:0)

首先,如果您通过网址传递,请阅读此django's url

然后,如果你在JS中使用Ajax:

只需检查输入(您可以检查事件键或提交时检查)

我们有很多方法可以做到这一点