gpt4 book ai didi

python - Django TypeError 字段 'id' 需要一个数字,但得到了 SimpleLazyObject

转载 作者:行者123 更新时间:2023-12-02 05:49:07 24 4
gpt4 key购买 nike

我试图让我的 openai 聊天机器人为进行聊天的用户保存聊天内容,但它给了我这个错误:

Traceback (most recent call last):
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\fields\__init__.py", line 2053, in get_prep_value
return int(value)
^^^^^^^^^^
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'SimpleLazyObject'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\Downloads\finalproject\finalproject\django_chatbot\chatbot\views.py", line 29, in chatbot
chats = Chat.objects.filter(user=request.user)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\query.py", line 1436, in filter
return self._filter_or_exclude(False, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\query.py", line 1454, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, args, kwargs)
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\query.py", line 1461, in _filter_or_exclude_inplace
self._query.add_q(Q(*args, **kwargs))
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\sql\query.py", line 1534, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\sql\query.py", line 1565, in _add_q
child_clause, needed_inner = self.build_filter(
^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\sql\query.py", line 1480, in build_filter
condition = self.build_lookup(lookups, col, value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\sql\query.py", line 1307, in build_lookup
lookup = lookup_class(lhs, rhs)
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\lookups.py", line 27, in __init__
self.rhs = self.get_prep_lookup()
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\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 "C:\Users\Nathan A\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\fields\__init__.py", line 2055, in get_prep_value
raise e.__class__(
TypeError: Field 'id' expected a number but got <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x0000025FE3733310>>.

这是我的代码:

def chatbot(request):
chats = Chat.objects.filter(user=request.user)

if request.method == 'POST':
message = request.POST.get('message')
response = ask_openai(message)

chat = Chat(user=request.user, message=message, response=response, created_at=timezone.now())
chat.save()
return JsonResponse({'message': message, 'response': response})
return render(request, 'index.html', {'chats': chats})

我不知道发生了什么,我是 chatgpt openai api 的新手。如果您需要更多代码,我可以提供更多代码。它说 chats = Chat.objects.filter(user=request.user) 是问题所在。

最佳答案

要解决此问题,您需要在尝试过滤 View 中的用户字段之前确保用户已通过身份验证,如果用户为“无”,您将得到“无”并且无法使用对象进行解释

from django.contrib.auth.decorators import login_required

@login_required
def chatbot(request):
chats = Chat.objects.filter(user=request.user)

if request.method == 'POST':
message = request.POST.get('message')
response = ask_openai(message)

chat = Chat(user=request.user, message=message, response=response, created_at=timezone.now())
chat.save()
return JsonResponse({'message': message, 'response': response})

return render(request, 'index.html', {'chats': chats})

关于python - Django TypeError 字段 'id' 需要一个数字,但得到了 SimpleLazyObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76832518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com