1
我试图找到一种方法来在Django模型中存储函数。 我的用例是一个带有计划和有条件发送的电子邮件系统。 “如果约翰还没有登录,明天发送此电子邮件”Django,数据库中的存储功能
“明天发送此电子邮件。
理想情况下,我想创建带有测试功能字段的电子邮件。
def my_test(instance):
if (now() - instance.user.last_login) > timedelta(days=1):
return False
return True
Email(send_later_date=now() + timedelta(days=1),
conditional=my_test)
这里就是我想
import importlib
Email(send_later_date=now() + timedelta(days=1),
conditional='my_app.views.my_test')
class Email(models.Model):
send_later_date = models.DateTimeField(null=True, blank=True)
conditional = models.TextField()
def send_email(self):
if self.send_later_date < now():
if not self.conditional:
function_send_email()
else:
function_string = self.conditional
mod_name, func_name = function_string.rsplit('.',1)
mod = importlib.import_module(mod_name)
func = getattr(mod, func_name)
if func():
function_send_email()
你会怎么做呢?我正在考虑将函数名称存储在文本字段中。一旦需要,你将如何运行它? ImportLib
似乎很有趣......
不错的答案。用户不能输入任何功能或代码,电子邮件都是从代码中生成的。所以将条件函数放在生成电子邮件的位置附近非常方便。我目前有这个电子邮件应用程序的集中版本,这是一个噩梦来维护。这就是为什么我正在研究这个想法.. :-) –