Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 暂时保存ID列表(Django)_Python_Django - Fatal编程技术网

Python 暂时保存ID列表(Django)

Python 暂时保存ID列表(Django),python,django,Python,Django,我有一个用户可以创建消息的应用程序。他们必须从数据库中的联系人中选择收件人。消息发布时,所选联系人用于创建消息收件人。以下是应用程序中模型的简化示例: from django.db import models class Message(models.Model): DRAFT = 0 PUBLISHED = 1 STATUS_CHOICES = ( (DRAFT, 'Draft'), (PUBLISHED, 'Published'),

我有一个用户可以创建消息的应用程序。他们必须从数据库中的联系人中选择收件人。消息发布时,所选联系人用于创建消息收件人。以下是应用程序中模型的简化示例:

from django.db import models


class Message(models.Model):
    DRAFT = 0
    PUBLISHED = 1
    STATUS_CHOICES = (
        (DRAFT, 'Draft'),
        (PUBLISHED, 'Published'),
    )
    message = models.TextField(null=False, blank=False)
    subject = models.CharField(max_length=255)
    status = models.IntegerField(choices=STATUS_CHOICES, default=DRAFT)


class Contact(models.Model):
    email = models.CharField(max_length=255)


class MessageRecipient(models.Model):
    recipient = models.ForeignKey(Contact, related_name='messages')
    message = models.ForeignKey(Message, related_name='recipients')

如果用户将消息保存为草稿并决定离开表单,我希望他们返回并查看他们之前选择的联系人是否已预选。他们可能还想更改他们的选择,因此我认为最好在消息完全提交和发布之前避免创建MessageRecipient实例。我想这意味着我必须保存一个联系人PK列表,并将其作为草稿附在邮件中。关于临时保存此联系人PK列表的方法有什么建议吗?

为什么不在您的
邮件
模型中添加一个字段,例如
状态
(在草稿/已发送/其他内容之间选择)或
是草稿
?我编辑了我的代码,以表明我已经在保存邮件的“状态”,这不是问题。我只是不知道如何保存附加在邮件中的联系人PK列表。那么我最初的问题是——为什么不直接使用它呢?我的意思是,在发送邮件之前是否创建了收件人真的很重要吗?如果要对“收到邮件”的收件人运行报告,可以加入邮件模型并检查其状态(例如,
MessageRecipient.objects.filter(message\uu status='Published')
),否?我只希望用户在将表单保存为草稿并返回后能够离开表单,他们选择的联系人将被预先选择。同样,这可以通过允许他们将
MessageRecipient
模型保存到数据库中来实现。只需检查
消息
模型的状态,即可将其显示为草稿或已发布。显然,视图代码只应在用户发送消息(即,它不再是草稿)时以电子邮件的形式发送消息。保存
联系人
pks的列表不会给您带来任何好处,事实上会降低您的速度,因为您必须执行两个单独的查询。而是保存
MessageRecipient
模型并利用数据库联接。为什么不在
Message
模型中添加一个字段,例如
state
(草稿/已发送/其他内容)或
is_draft
?我编辑了代码以显示我已经在保存消息的“状态”,这不是问题所在。我只是不知道如何保存附加在邮件中的联系人PK列表。那么我最初的问题是——为什么不直接使用它呢?我的意思是,在发送邮件之前是否创建了收件人真的很重要吗?如果要对“收到邮件”的收件人运行报告,可以加入邮件模型并检查其状态(例如,
MessageRecipient.objects.filter(message\uu status='Published')
),否?我只希望用户在将表单保存为草稿并返回后能够离开表单,他们选择的联系人将被预先选择。同样,这可以通过允许他们将
MessageRecipient
模型保存到数据库中来实现。只需检查
消息
模型的状态,即可将其显示为草稿或已发布。显然,视图代码只应在用户发送消息(即,它不再是草稿)时以电子邮件的形式发送消息。保存
联系人
pks的列表不会给您带来任何好处,事实上会降低您的速度,因为您必须执行两个单独的查询。而是保存
MessageRecipient
模型并利用数据库联接。