"AttributeError: у объекта 'NoneType' нет атрибута 'startswith' в Django Djongo".

Я сталкиваюсь с ошибкой AttributeError в моем Django при использовании Djongo в качестве бэкенда базы данных. Сообщение об ошибке выглядит следующим образом:

AttributeError at /loginPage
'NoneType' object has no attribute 'startswith'

Эта ошибка возникает в методе quote_name в operations.py. Вот соответствующий фрагмент кода:

class DatabaseOperations(BaseDatabaseOperations):
    def quote_name(self, name):
        if name.startswith('"') and name.endswith('"'):
            return name
        return '"{}"'.format(name)

Я понимаю, что эта ошибка обычно возникает, когда метод вызывается на объекте NoneType, но я не знаю, почему это происходит в данном контексте.

Может ли кто-нибудь подсказать, почему может возникнуть эта ошибка и как ее решить? Я использую Django с Djongo в качестве бэкенда базы данных.

Далее я пытаюсь реализовать функциональность, при которой данные формы попадают в две разные коллекции в моей базе данных MongoDB, и все работает нормально. Я попытался соответствующим образом изменить код, но сталкиваюсь с этой ошибкой при входе в систему. Ниже приведен фрагмент кода, в котором возникает ошибка:

#forms.py
class UserAdminCreationForm(UserCreationForm):
    company_name = forms.CharField(max_length=100)
    ROLE_CHOICES = [
        ('admin', 'Admin'),
        ('user', 'User'),
    ]
    role = forms.ChoiceField(choices=ROLE_CHOICES, label='Role')    
    email = forms.EmailField(required=True)

    class Meta:
        model = get_user_model()
        fields = ['company_name','role','first_name', 'last_name','email', 'password1', 'password2',]
    def save(self, commit=True):
        user = super().save(commit=False)  # Get the user object without saving to the database yet
        user.company_name = self.cleaned_data['company_name']  

        if commit:
            user.save()  
            slug = slugify(user.company_name)
            role = self.cleaned_data.get('role')
            collection_name = f"loginapp_{slug}_{role}"

            # Change the database table name for the CustomUser model
            CustomUser._meta.db_table = collection_name

            # Save the user to the new collection
            user.save()

            # Reset the database table name to the original one
            CustomUser._meta.db_table = None
           
         return user

Я заметил, что ошибка возникает периодически и устраняется, когда я перезапускаю сервер Django. Любые соображения о том, почему это может происходить, были бы очень признательны. Спасибо!

Полное возвращение к трассировке:

#views.py

def loginPage(request):
    form = LoginForm()

    if request.method == 'POST':
        form = LoginForm(request.POST, data=request.POST)
        if form.is_valid():
            email = request.POST.get('email')
            password = form.cleaned_data['password']
            # Authenticate user using email instead of username
            user = authenticate(request, email= email , password=password)

            if user is not None:
                auth.login(request, user)
                return redirect("dashboard")
            else:              
                form.add_error(None, "Invalid email or password")

    context = {'loginform': form}
    return render(request, 'loginapp/loginPage.html', context=context)
Вернуться на верх