简体   繁体   中英

Convert case sensitives

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM