通常,为了在创建对象时发送电子邮件,我将覆盖save方法:
def save(self, *args, **kwargs):
send_email(context)
return super().save(*args, **kwargs)
但是,我现在需要上下文包含对象的属性,该属性在保存对象之前是未知的,即与模型对象关联的File对象的url。
我知道这可以通过post_save信号来完成,但是文档给人的印象是,当不同的模型需要访问此类信息时,最好使用此方法。我觉得在这样的单模型设置中使用它不是一个好习惯。
我已经尝试过了:
foo = super().save(*args, **kwargs)
send_email(foo.document.url)
return foo
但是foo
似乎是None
。
答案 0 :(得分:0)
save方法不返回任何内容。但是项目是//instantiate dictionary of dictionaries
var LANG = new Dictionary<string, Dictionary<int, string>>();
//set dictionary for "en" key
LANG["en"] = new Dictionary<int, string>()
{
{ 11, "Name" },
{ 20, "Surname" },
{ 21, "Age" },
{ 22, "Profession" }
};
//set dictionary for "es" key
LANG["es"] = new Dictionary<int, string>()
{
{ 11, "Nombre" },
{ 20, "Apellido" },
{ 21, "Edad" },
{ 22, "Profesión" }
};
,您可以在调用super之后使用它。
self
答案 1 :(得分:0)
Daniel的回答是正确的,但是如果您只想在创建对象时发送电子邮件,而不是更新对象,则还应该检查实例是否分配了pk,例如:
def save(self, *args, **kwargs):
created = self.pk is None
return super().save(*args, **kwargs)
if created:
send_email(context)