Python 向多个用户发送消息
我有一个型号Python 向多个用户发送消息,python,django,django-forms,Python,Django,Django Forms,我有一个型号UserPhoneNumber。我想向多个电话号码发送信息。 我已将ForeignKey应用于to\u number而不是M2M,因为我想跟踪每个电话号码。例如,此消息是已传递还是未传递 如何向多个用户发送消息?我应该使用内联表单集吗?或者其他想法?或批量创建 class UserCellPhone(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL) cell_number = model
UserPhoneNumber
。我想向多个电话号码发送信息。
我已将ForeignKey
应用于to\u number
而不是M2M
,因为我想跟踪每个电话号码。例如,此消息是已传递还是未传递
如何向多个用户发送消息?我应该使用内联表单集吗?或者其他想法?或批量创建
class UserCellPhone(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
cell_number = models.CharField(max_length=15, unique=True)
class SentMessage(models.Model):
to_number = models.ForeignKey(UserCellPhone)
account_sid = models.CharField(max_length=34, default="", blank=True)
body = models.TextField(max_length=160, default="", blank=True)
sent_at = models.DateTimeField(null=True, blank=True)
delivered_at = models.DateTimeField(null=True, blank=True)
status = models.CharField(max_length=20, default="", blank=True)
据我所知,您似乎误解了M2M的工作原理 在您的情况下,似乎可以将一条消息发送给多个号码。一个数字可以接收many消息->您确实需要一个many2many关系。没有其他解决办法 在“概念方式”(Django)中,当您设计M2M关系时,您定义了两个模型(
usermobile
和SentMessage
),但在现实中(即在数据库级别发生的情况),将涉及3个表,因为Django将创建一个表,用M2M关系链接您的两个模型
如果要指定与Django一起使用的第三个表,可以使用以下示例以这种方式执行:
class UserCellPhone(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
class SentMessage(models.Model):
to_number = models. ManyToManyField(UserCellPhone, through='MessagesDelivery')
这样,Django将创建3个表,MessagesDelivery表将包含带有FK to UserPhone+FK to SentMessage的夫妇
例如,如果将消息_38发送到usermobile_45和usermobile_67,则消息传递表如下所示:
-- sent_message_id - usercellphone_id
-- 38 - 45
-- 38 - 67
这就是M2M关系的工作原理(不仅仅是在Django)。太棒了。非常感谢。:-)