首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:更新模板-通知管理员

Django:更新模板-通知管理员
EN

Stack Overflow用户
提问于 2016-07-16 04:53:58
回答 1查看 185关注 0票数 0

我正在使用一些django模型条目表格来更新我们网站上发布的一些传记信息。我希望人们用他们的用户名登录到/admin上来更新他们自己的个人履历信息,但我不希望他们能够实时更新网页。我想知道,当他们更新模型时,是否有可能通知我,然后我就可以使用某种manage.py命令来确认这一点。

也许设置一个镜像开发站点,然后在我看到它之后将该信息推送到我们的部署中会更容易吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-16 06:15:31

首先,不要让用户登录到管理员,这不是它的目标:

Django最强大的部分之一是自动管理界面。它从模型中读取元数据,以提供一个以模型为中心的快速界面,受信任的用户可以在其中管理站点上的内容。管理员推荐使用的仅限于组织的内部管理工具。它的目的不是建立你的整个前端。

-- Django行政管理正式参考资料

考虑到管理员仅限于“受信任的用户”,因此不需要验证他们的输入。

您应该在前端创建一个表单(例如在用户的配置文件空间上)。

要以这种形式验证它们的输入,您有几个选项。最简单的方法可能是创建一个ModerationModel,如下所示:

代码语言:javascript
复制
class ModerationModel(models.Model):

    STATUS_CHOICES = [
        ('pending', _("Pending"),
        ('accepted', _("Accepted"),
        ('rejected', _("Rejected"),
    ]

    submitter = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE)
    submitter_ip = models.GenericIPAddressField()
    date_submitted = models.DateTimeField(auto_now_add=True)
    status = models.CharField(max_length=20, choices=STATUS_CHOICES)
    form_class = models.CharField(
        max_length=100,
        help_text=_(
            "Python dotted path to the Form class. Example: "
            "myapp.forms.UserBiographyForm"
        ),
    )
    form_data = models.TextField(
        help_text=_(
            "Serialized form data"
        ),
    )

当表单提交时,而不是调用form.save()方法,您将调用一个自定义方法,该方法创建一个包含序列化表单数据的ModerationModel实例。然后,您将能够取消对表单数据的序列化,重新构建表单实例,并在验证后保存它。

其他解决方案可能是使用第三方应用程序(如django-简单-历史 ),使您能够跟踪对模型实例所做的更改并还原更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38407879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档