Change the client-site “pattern” for URLField

I have a model which contains link = URLField(). The problem is, I don’t want the client-side to do any kind of validation (i’m doing that in the clean_link) i.e I want the pattern in input to accept anything

I have tried using django-widget-tweaks such as


{% load widget_tweaks %}
      <div class="form-group">

which has no effect (tested in Firefox). I can include novalidate in my <form> but then that’ll remove validations for all my fields, and not only for link.

Further more I have tried changing it in the form according to the docs

from django import forms
from .models import *
from local.utils.utils import check_link
from django.utils.translation import gettext_lazy as _
class MyForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

        # change a widget attribute:
         self.fields['link'].widget.attrs.update({'pattern': '.*'})

but that does not have any effect at all (the input field is still rendered red, when entering anything apart from the standard validation).

At last I have tried adding

$(document).ready(function () {



I can see we do indeed change the pattern

but it does not accept everything any way.

How do we properly manage the attributes/properties for <input> when we are using the Django-form?

Create a separate form field for the form that is just a CharField. Then add a form field validator for it, and assign it to the model field in your view.