【发布时间】:2018-10-16 20:37:01
【问题描述】:
wagtail 用户实例的默认通知设置似乎是“当页面提交审核时接收通知”,这不符合我们的需求:我们不希望每个 wagtail 用户都收到通知(通过电子邮件发送)页面被提交以供审核。
此用户通知设置的默认值为“True”:
# wagtail/wagtail/users/models.py
# https://github.com/wagtail/wagtail/blob/master/wagtail/users/models.py#L25
class UserProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
submitted_notifications = models.BooleanField(
verbose_name=_('submitted notifications'),
default=True,
help_text=_("Receive notification when a page is submitted for moderation")
)
……我想将默认设置更改为“False”(例如,用户应该选择接收电子邮件通知)。
但我不知道这项任务的“最佳实践方法”是什么。
遇到这个问题我有点惊讶,因为我认为只有“版主”组/角色的成员会收到通知。 (这似乎不是真的)。
我尝试/想到的:
-
以编程方式修改此设置(有效):
可以通过 shell 修改现有的用户实例:
./manage.py shell from django.contrib.auth import get_user_model User = get_user_model() for user in User.objects.all(): user.wagtail_userprofile.update(submitted_notifications=False) user.wagtail_userprofile.save() -
在我的 CustomUser save() 方法中修改此设置(不起作用):
# project/users/models.py (pseudocode) class CustomUser(AbstractUser): def save(self, *args, **kwargs): super().save(*args, **kwargs) self.wagtail_userprofile.update(submitted_notifications=False) self.wagtail_userprofile.save()这会引发“RelatedObjectDoesNotExist”错误。
添加数据迁移以更改默认值(只是一个想法——我不知道这是否是一个选项或如何实现)。
设置:
- django 2.0.8
- 鹡鸰 2.2.2
【问题讨论】: