我已经覆盖了,Django Registration app
并在注册表单中添加了一些自定义字段。
我添加了一项功能,即在选择特定值时,必填字段将隐藏。我现在在此required
领域中很成功,我想针对我的特定领域将其删除。
我尝试了以下方法和其他方法,但是从下拉列表中选择了值,隐藏了必填字段,但是在单击signup
按钮后我得到了
我的代码:
<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>
编辑1
表格
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
编辑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()
我通过在forms.py中进行更改来解决了该问题,然后对其进行了应用JavaScript
并且对我有用。
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句