Назад | Перейти на главную страницу

Django DateFilter - изменение input_format

Мне нужно изменить формат ввода только для одного поля. Мне нужно принять 31.03.2020 вместо 31.03.2020. Если я ввожу 31.03.2020, то он работает, но при попытке 31.03.2020 появляется Введите правильную дату. Это можно сделать глобально с помощью DATETIME_INPUT_FORMATS, но я ищу способ, в котором input_format будет применяться только к одному полю.

Это то, что у меня есть сейчас.

view.py

def customer(request, pk):
    customer = Customer.objects.get(id=pk)
    orders = customer.order_set.all()
    order_count = orders.count()

    myFilter = OrderFilter(request.GET, queryset=orders)
    orders = myFilter.qs

    context = {
        'customer': customer,
        'orders': orders,
        'order_count': order_count,
        'myFilter': myFilter
    }

return render(request, 'accounts/customer.html', context)

filter.py

class OrderFilter(FilterSet):

    start_date = DateFilter(field_name="date_created", lookup_expr='gte')

    class Meta:
    model = Order
    fields = ['product',  'status', 'note', 'start_date']

customer.html

<div class="row">
    <div class="col">
        <div class="card card-body">
            <form method="get">
            {{ myFilter.form }}
            <button class="btn btn-primary" type="submit">Search</button>
          </form>
        </div>
    </div>

</div>

Я пытался добавить в этом возражать против класса, но безуспешно.

def __init__(self, *args, **kwargs):
        super(OrderFilter, self).__init__(*args, **kwargs)
        self.start_date = DateTimeField(input_formats=['%d-%m-%Y'])