I think you are over complicating some part of you code.
If I replace DatetimeInput with DatePicker something like the following will work:
import panel as pn
import param
from datetime import date
pn.extension()
def main():
start = pn.widgets.DatePicker(name="Start date", value=date.today())
end = pn.widgets.DatePicker(name="End date", value=date.today())
field = pn.widgets.IntInput(name="Field ID", value=1)
if pn.state.location:
pn.state.location.sync(start, {"value": "from"})
pn.state.location.sync(end, {"value": "to"})
pn.state.location.sync(field, {"value": "field_id"})
return pn.Column(start, end, field)
pn.panel(main).servable()
If you want an Input instead of DatePicker, a small hack is needed to change the param.Date to param.CalendarDate for the widget like and change the format:
class DateInput(pn.widgets.DatetimeInput):
format = param.String(default=r'%Y-%m-%d')
value = param.CalendarDate(default=None)
And then replace pn.widgets.DatePicker with DateInput in the first code block.