Cannot query "admin": Must be "ChatMessage" instance in Django
In View Function
it can show this error
Request Method:GETRequest URL:http://127.0.0.1:8000/inbox/Django Version:4.2.25Exception Type:ValueErrorException Value:Cannot query "admin": Must be "ChatMessage" instance.Exception Location:D:\Socialmedia\.venv\lib\site-packages\django\db\models\sql\query.py, line 1253, in check_query_object_typeRaised during:core.views.messages.inboxPython Executable:D:\Socialmedia\.venv\Scripts\python.exePython Version:3.9.13Python Path:['D:\\Socialmedia', 'C:\\Users\\ER-RPJ\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\Users\\ER-RPJ\\AppData\\Local\\Programs\\Python\\Python39\\DLLs', 'C:\\Users\\ER-RPJ\\AppData\\Local\\Programs\\Python\\Python39\\lib', 'C:\\Users\\ER-RPJ\\AppData\\Local\\Programs\\Python\\Python39', 'D:\\Socialmedia\\.venv', 'D:\\Socialmedia\\.venv\\lib\\site-packages']
def inbox(request):
if request.user.is_authenticated:
user_id = request.user
chat_messages = ChatMessage.objects.filter(
id__in=Subquery(
User.objects.filter(
Q(chat_sender__chat_receiver=user_id) |
Q(chat_receiver__chat_sender=user_id)
).distinct().annotate(
last_msg=Subquery(
ChatMessage.objects.filter(
Q(sender=OuterRef('id'), receiver=user_id) |
Q(receiver=OuterRef('id'), sender=user_id)
).order_by('-id')[:1].values_list('id', flat=True)
)
).values_list('last_msg', flat=True).order_by('-id')
)
).order_by('-id')
context = {
'chat_messages': chat_messages,
}
return render(request, 'chat/inbox.html', context)
In My model
class ChatMessage(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name='chat_user')
chat_sender = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name='chat_sender')
chat_receiver = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name='chat_receiver')
message = models.TextField()
is_read = models.BooleanField(default=False)
date = models.DateTimeField(auto_now_add=True)
mid=ShortUUIDField(length=7,max_length=25,alphabet='abcdefghijklmnopqrstuvwxyz')
# def __str__(self):
# return self.user
class Meta:
verbose_name_plural = 'Chat messages'