【发布时间】:2021-01-16 20:44:05
【问题描述】:
我为我的项目用户之间的消息传递创建了模型。我的消息模型:
class Chat(models.Model):
id = models.CharField(_('id'), primary_key=True, default=hex_uuid, editable=False,
max_length=32)
chat_participants = models.ManyToManyField(User, blank=True)
class Meta:
db_table = 'chat'
verbose_name_plural = 'chats'
class Message(models.Model):
id = models.CharField(_('id'), primary_key=True, default=hex_uuid, editable=False,
max_length=32)
chat = models.ForeignKey(Chat, on_delete=models.CASCADE)
author = models.ForeignKey(User, on_delete=models.CASCADE)
text = models.TextField(_('text'), max_length=1500, null=True, blank=True)
send_datetime = models.DateTimeField(auto_now_add=True, blank=True)
class Meta:
db_table = 'message'
verbose_name_plural = 'messages'
class MessageRecipient(models.Model):
id = models.CharField(_('id'), primary_key=True, default=hex_uuid, editable=False,
max_length=32)
message = models.ForeignKey(Message, on_delete=models.CASCADE)
recipient = models.ForeignKey(User, on_delete=models.CASCADE)
is_seen = models.BooleanField(_('is_seen'), default=False)
class Meta:
db_table = 'message_recipient'
verbose_name_plural = 'message recipients'
unique_together = ('message', 'recipient')
- 如何自动将消息类(模型)中的“作者”字段分配给编写消息的用户 ID?现在我需要自己从我数据库中的(非真实)用户中选择“作者”,但这是错误的,必须根据谁编写消息来自动选择。或者,让我们说出这条消息是从谁的帐户中写入的。
- 在 MessageRecipient 类(模型)中,我必须自己选择收件人,我不仅可以从必须到达的特定聊天组的参与者中选择,还可以从我的数据库中的所有其他用户中选择,甚至不在那个特定的聊天中。如何限制收件人的范围,以便我只能选择特定消息(查看消息字段)到达的聊天中的那些人?
【问题讨论】:
-
您通常在创建消息的视图中分配用户。
-
正如@WillemVanOnsem 所指出的,这些模型的相应视图和表单在这里看起来更受关注。发布这些代码,我们可以更好地了解您的需求!