【发布时间】:2010-10-02 17:48:16
【问题描述】:
我正在编写的 Django 项目中的一个功能是发送时事通讯。我有一个模型Newsletter 和一个函数send_newsletter,我已经注册了它来收听Newsletter 的post_save 信号。当通过管理界面保存时事通讯对象时,send_newsletter 检查created 是否为 True,如果是,则它实际发送邮件。
但是,出于显而易见的原因,编辑已发送的时事通讯没有多大意义。有没有办法让 Newsletter 对象在保存后变为只读?
编辑:
我知道我可以覆盖对象的save 方法来引发错误,或者如果对象存在则什么都不做。但是,我没有看到这样做的意义。至于前者,我不知道在哪里捕获该错误以及如何向用户传达对象未保存的事实。至于后者,给用户错误的反馈(管理界面说保存成功)似乎不是一件好事。
我真正想要的是允许用户使用管理界面编写时事通讯并发送,然后浏览已经发送的时事通讯。我希望管理界面在不可编辑的输入框中显示已发送时事通讯的数据,而不需要“保存”按钮。或者,我希望“保存”按钮处于非活动状态。
【问题讨论】:
标签: python django django-models django-admin django-signals