tomitokko / django-chatbot

88 stars 73 forks source link

Field 'id' expected a number but got <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object... #5

Open ig0r-ferreira opened 11 months ago

ig0r-ferreira commented 11 months ago

Situation

This error is obtained when accessing the chatbot page while logged out.

Traceback

Environment:

Request Method: GET Request URL: http://127.0.0.1:8000/

Django Version: 4.2.5 Python Version: 3.11.4 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'chatbot'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback (most recent call last): File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/fields/init.py", line 2053, in get_prep_value return int(value) ^^^^^^^^^^

The above exception (int() argument must be a string, a bytes-like object or a real number, not 'SimpleLazyObject') was the direct cause of the following exception: File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/django_chatbot/chatbot/views.py", line 32, in chatbot chats = Chat.objects.filter(user=request.user) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/manager.py", line 87, in manager_method return getattr(self.get_queryset(), name)(*args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/query.py", line 1436, in filter return self._filter_or_exclude(False, args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/query.py", line 1454, in _filter_or_exclude clone._filter_or_exclude_inplace(negate, args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/query.py", line 1461, in _filter_or_exclude_inplace self._query.add_q(Q(args, kwargs)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1545, in addq clause, = self._add_q(q_object, self.used_aliases) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1576, in _add_q child_clause, needed_inner = self.build_filter(

File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1491, in build_filter condition = self.build_lookup(lookups, col, value) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1318, in build_lookup lookup = lookup_class(lhs, rhs) ^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/lookups.py", line 27, in init self.rhs = self.get_prep_lookup() ^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/fields/related_lookups.py", line 166, in get_prep_lookup self.rhs = target_field.get_prep_value(self.rhs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/iferreira/projects/django-chatbot/.venv/lib/python3.11/site-packages/django/db/models/fields/init.py", line 2055, in get_prep_value raise e.class( ^^^^^^^^

Exception Type: TypeError at / Exception Value: Field 'id' expected a number but got <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fdc8ce5ced0>>.

samarth-2 commented 10 months ago

in chatbot folder go in views.py and write this line => chats = Chat.objects.filter(user=request.user) if request.user.is_authenticated else [] insted of the line written earlier for retrieving the chats. it would start working fine :)

ig0r-ferreira commented 10 months ago

in chatbot folder go in views.py and write this line => chats = Chat.objects.filter(user=request.user) if request.user.is_authenticated else [] insted of the line written earlier for retrieving the chats. it would start working fine :)

I've already opened a PR (#6 ) suggesting this, as soon as it's merged this issue will be closed.