Avoid validating dynamic field
mschoettle opened this issue · 2 comments
Thanks for this package and especially for the HTMX and Unpoly examples. It helped me realize that Unpoly might be a better fit (in my case) given the up-validate
mechanism without needing a separate view.
When this is done, though, selecting a different make in the example causes the form to be validated. I.e., switching from "Audi" to "Toyota" causes the validation error "Select a valid choice. a1 is not one of the available choices.".
Is there any way to avoid that?
One way I thought about it, seeing the example in the official docs for [up-validate], is to handle it differently when the X-Up-Validate
header is present:
if 'X-Up-Validate' in request.headers:
form = MakeAndModelForm(initial=request.POST)
But there might be a better way to achieve this.
Good catch, I've done something very similar in the past:
def is_validating(request):
return "X-Up-Validate" in request.headers
Then in your form, something like this:
class MakeAndModelForm(DynamicFormMixin, forms.Form):
...
model = DynamicField(
forms.ChoiceField,
choices=lambda form: form.MODEL_CHOICES[form["make"].value()],
required=lambda form: not is_validating(form.context["request"]),
)
Thanks! So there are different ways to achieve it depending on the use case. I wasn't sure if going the initial
route is the appropriate way.