У меня есть форма, для которой мне нужно установить несколько значений перед проверкой. Я пытаюсь:
if request.method == 'POST':
reservation_form = ReservationForm(request.POST, initial={'is_reservation':True, 'user':request.user})
Но это не работает. Если я исключаю поле 'user' из формы (модели), я получаю ошибку с нулевым ограничением, если я ее включаю, вместо этого я получаю ошибку проверки. Так что либо игнорируется начальное значение, потому что я исключил поле, либо данные request.POST превосходят его, даже если это значение не опубликовано.
Так как мне это сделать?
class ReservationForm(ModelForm): # TODO: abstract this and shipment form
service_types = MultipleChoiceField(widget=MultiColumnCheckboxSelect(columns=2), choices=ServiceTypes,
initial=[ServiceTypes.OPEN_TRANS], error_messages={'required': 'Please select at least one service type.'})
payment_methods = MultipleChoiceField(widget=MultiColumnCheckboxSelect(columns=2), choices=PaymentMethods,
error_messages={'required': 'Please select at least one payment method.'})
payment_times = MultipleChoiceField(widget=MultiColumnCheckboxSelect(columns=2), choices=PaymentTimes, required=True,
error_messages={'required': 'Please select at least one payment type.'})
class Meta:
model = Shipment
exclude = ['headline', 'created', 'updated', 'expiry_date', 'status', 'accepted_bid', 'pickup_address', 'dropoff_address', 'billing_address', 'target_price']
widgets = {
'pickup_earliest': TextInput(attrs={'class':'date'}),
'pickup_latest': TextInput(attrs={'class':'date'}),
'dropoff_earliest': TextInput(attrs={'class':'date'}),
'dropoff_latest': TextInput(attrs={'class':'date'}),
'additional_info': WarningTextArea,
}