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)。

太棒了。非常感谢。:-)