I have override the Django Registration app
and added some custom fields in signup form.
I have added feature that on selection of particular value, required field will hide. I am successful in it now I want to remove required
for my particular field.
I have tried below and many other ways but on selection of value from dropdown, required field hide but on click signup
button I get
my code:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$('#id_type').change(function(){
var type = $(this).val();
if(type === "dealer"){
$('#id_dealership_name').show();
$("label[for='id_dealership_name']").show();
}
else{
$("#id_dealership_name").removeAttr("required")
$('#id_dealership_name').hide();
$("label[for='id_dealership_name']").hide();
}
});
</script>
EDIT 1
form.py
class DealerForm(forms.ModelForm):
class Meta:
model = Dealer
exclude = ('user', 'site')
def __init__(self, *args, **kwargs):
super(DealerForm, self).__init__(*args, **kwargs)
self.fields['dealership_name'].required = False
EDIT 2
views.py
class DealerRegistrationView(RegistrationView):
def __init__(self, **kwargs):
super(DealerRegistrationView, self).__init__(**kwargs)
RegistrationForm.base_fields.update(DealerForm.base_fields)
form_class = RegistrationForm
def register(self, form):
new_user = super(DealerRegistrationView, self).register(form)
if Site._meta.installed:
site = Site.objects.get_current()
if form.cleaned_data['type'] == "dealer":
new_dealer = Dealer(
user=new_user,
site_id=site.id,
whatsapp=form.cleaned_data['username'],
dealership_name=form.cleaned_data['dealership_name'],
).save()
I resolved it by making changes in forms.py and then applied JavaScript
and it worked for me.
from django import forms
from registration.forms import RegistrationForm, RegistrationFormUniqueEmail
class DealerForm(RegistrationFormUniqueEmail):
type = forms.ChoiceField(required=True, choices=(
('dealer', 'Dealer'),
('marketing_agent', 'Marketing Agent'),
('private_seller', 'Private Seller'),
('virtual_dealer', 'Virtual Dealer')
))
dealership_name = forms.CharField(required=False, max_length=50)
subdomain_name = forms.CharField(required=False, max_length=50)
banner_image = forms.ImageField(required=False)
logo_image = forms.ImageField(required=False)
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments