i want to convert any new enter user name to lowercase and check if the user is exist or now and use iexact to login in capital or small where should determine the login uses small or capital
forms.py
class AddCompanyForm(forms.ModelForm):
"""
Add company model form
"""
name = forms.CharField(required=True)
password = forms.CharField(widget=forms.PasswordInput())
logo = forms.ImageField(required=False)
phone_number = forms.CharField(widget=forms.NumberInput())
label = forms.CharField(max_length=20)
country = forms.ModelChoiceField(queryset=Country.objects.all())
city = forms.ModelChoiceField(queryset=City.objects.all())
area = forms.ModelChoiceField(queryset=Area.objects.all())
latitude = forms.CharField(max_length=50, required=False)
longitude = forms.CharField(max_length=50, required=False)
water_source = forms.ModelChoiceField(queryset=WaterSource.objects.all())
class Meta:
model = User
fields = ['name', 'username', 'email', 'password']
def __init__(self, *args, **kwargs):
super(AddCompanyForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_tag = False
self.layout = Layout(Row(Column('name', css_class='form-group col-md-6 mb-0'),
Column('username', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
Row(Column('email', css_class='form-group col-md-6 mb-0'),
Column('password', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
Row(Column('phone_number', css_class='form-group col-md-6 mb-0'),
Column('logo', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
Row(Column('label', css_class='form-group col'), css_class='form-row'),
Row(Column('country', css_class='form-group col'),
Column('city', css_class='form-group col'), Column('area', css_class='form-group col'),
css_class='form-row'), Row(Column('latitude', css_class='form-group col'),
Column('longitude', css_class='form-group col'),
css_class='form-row'),
Row(Column('water_source', css_class='form-group col'), css_class='form-row'))
self.helper.layout = self.layout
views.py
class Companies(LoginRequiredMixin, UserPassesTestMixin, FormView, ListView):
"""
Company add edit delete view search paginator
"""
model = Company
template_name = 'company/index.html'
form_class = AddCompanyForm
success_url = reverse_lazy('companies:index')
object_list = Company.objects.all()
def form_valid(self, form):
user, created = User.objects.get_or_create(username=form.cleaned_data['username'],
email=form.cleaned_data['email'])
user.set_password(form.cleaned_data['password'])
user.save()
if created:
address = Address(label=form.cleaned_data['label'], city=form.cleaned_data['city'],
area=form.cleaned_data['area'], long=form.cleaned_data['longitude'],
lat=form.cleaned_data['latitude'], country=form.cleaned_data['country'])
address.save()
company = Company(owner=user, name=form.cleaned_data['name'],
phone_number=form.cleaned_data['phone_number'], logo=form.cleaned_data['logo'],
address=address, water_source=form.cleaned_data['water_source'])
company.save()
return super().form_valid(form)
am try to put this function in form to convert lowercase
def clean_username(self):
return self.cleaned_data['username'].lower()
how i can use iexact when login and where
you can match username in lowercase like this
from django.db.models.functions import Lower
input_name = form.cleaned_data['username'].lower()
User.objects.annotate(username_lower=Lower("username")).filter(username_lower=input_name)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.