如何解决Django SIgnals无法分配...'Mensagem.Chat'必须是“ Chat”实例
我正在完成一个大学项目,每当用户向其他人发送消息时,我都会停留在生成通知的过程中,虽然我有一个通知模型,但无法将消息发送给通知
在django admin中,我已经可以插入通知并显示屏幕,但是只能手动进行,当用户发送消息时,它不会发送到通知模型:'(
我无法创建聊天实例放在这里
stream = Mensagem(texto=message,chat=chat)
stream.save()
from users.models import MyUser
from Chat.models import Mensagem
from products.models import Product
class Notification(models.Model):
title = models.ForeignKey(Product,null=True,blank=True,on_delete=models.CASCADE)
message = models.ForeignKey(Mensagem,on_delete=models.CASCADE)
viewed = models.BooleanField(default=False)
sender = models.ForeignKey(MyUser,on_delete=models.CASCADE,related_name="noti_from_user")
user = models.ForeignKey(MyUser,related_name="noti_to_user")
from django.db import models
from django.db.models.signals import post_save,post_delete
class Chat(models.Model):
codigoSala = models.CharField(max_length=20,unique=True)
locador = models.CharField(max_length=50,blank=False,null=False)
locatario = models.CharField(max_length=50,null=False)
nomeSala = models.CharField(max_length=200,null=True)
def __str__(self):
super().__init__()
return self.codigoSala
def add_chat(self):
sender_message = Chat(
self.codigoSala,self.locador,self.locatario,self.nomeSala)
sender_message.save()
class Mensagem(models.Model):
texto = models.CharField(max_length=80)
chat = models.ForeignKey(Chat,on_delete=models.CASCADE)
def __str__(self):
return self.texto
def add_message(sender,instance,created,**kwargs):
message = instance
chat = Chat.objects.create()
stream = Mensagem(texto=message,chat=chat)
stream.save()
post_save.connect(Mensagem.add_message,sender=Mensagem)
错误:
无法分配“ {'codigoSala':'AzredEXOzKm8iQcrRzs5V0x5ySyd0hL8A0TEopAJein4rFjYHW','locador':'2','locatario':'1'}”:“ Mensagem.chat”必须为“ Chat”实例。
修改
I tried a lot,and I must have put the wrong error before,the correct error for this code is this:
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
October 29,2020 - 10:07:50
Django version 3.1.1,using settings 'alugobens.settings'
Starting ASGI/Channels version 2.4.0 development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
WebSocket HANDSHAKING /ws/chat/AzredEXOzKm8iQcrRzs5V0x5ySyd0hL8A0TEopAJein4rFjYHW/ [127.0.0.1:32952]
WebSocket CONNECT /ws/chat/AzredEXOzKm8iQcrRzs5V0x5ySyd0hL8A0TEopAJein4rFjYHW/ [127.0.0.1:32952]
WebSocket DISCONNECT /ws/chat/AzredEXOzKm8iQcrRzs5V0x5ySyd0hL8A0TEopAJein4rFjYHW/ [127.0.0.1:32952]
Internal Server Error: /chat/room/AzredEXOzKm8iQcrRzs5V0x5ySyd0hL8A0TEopAJein4rFjYHW/2/submit
Traceback (most recent call last):
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/backends/utils.py",line 84,in _execute
return self.cursor.execute(sql,params)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py",line 413,in execute
return Database.Cursor.execute(self,query,params)
sqlite3.IntegrityError: UNIQUE constraint failed: Chat_chat.codigoSala
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/core/handlers/exception.py",line 47,in inner
response = get_response(request)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/core/handlers/base.py",line 179,in _get_response
response = wrapped_callback(request,*callback_args,**callback_kwargs)
File "/home/josue/python/alugo/alug/Chat/views.py",line 127,in roomSubmit
mensagem.save()
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/models/base.py",line 753,in save
self.save_base(using=using,force_insert=force_insert,File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/models/base.py",line 801,in save_base
post_save.send(
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/dispatch/dispatcher.py",line 177,in send
return [
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/dispatch/dispatcher.py",line 178,in <listcomp>
(receiver,receiver(signal=self,sender=sender,**named))
File "/home/josue/python/alugo/alug/Chat/models.py",line 34,in add_message
chat = Chat.objects.create()
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/models/manager.py",line 85,in manager_method
return getattr(self.get_queryset(),name)(*args,**kwargs)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/models/query.py",line 447,in create
obj.save(force_insert=True,using=self.db)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/models/base.py",line 790,in save_base
updated = self._save_table(
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/models/base.py",line 895,in _save_table
results = self._do_insert(cls._base_manager,using,fields,returning_fields,raw)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/models/base.py",line 933,in _do_insert
return manager._insert(
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/models/manager.py",line 1249,in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/models/sql/compiler.py",line 1397,in execute_sql
cursor.execute(sql,params)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/backends/utils.py",line 98,in execute
return super().execute(sql,line 66,in execute
return self._execute_with_wrappers(sql,params,many=False,executor=self._execute)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/backends/utils.py",line 75,in _execute_with_wrappers
return executor(sql,many,context)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/backends/utils.py",params)
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/utils.py",line 90,in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/josue/python/alugo/alugo/lib/python3.8/site-packages/django/db/backends/utils.py",params)
django.db.utils.IntegrityError: UNIQUE constraint failed: Chat_chat.codigoSala
HTTP POST /chat/room/AzredEXOzKm8iQcrRzs5V0x5ySyd0hL8A0TEopAJein4rFjYHW/2/submit 500 [0.51,127.0.0.1:32950]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。