Мне нужно изменить формат ввода только для одного поля. Мне нужно принять 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'])