【问题标题】:Publish and "Save Drafts" feature in DjangoDjango 中的发布和“保存草稿”功能
【发布时间】:2021-10-05 12:41:01
【问题描述】:

我正在开发一个带有 React 前端的 Django Rest Framework B2B 应用程序。数据来自 csv,然后分析仪表板在 React 中呈现。每个帐户(“用户”)都是一家公司 - 在公司内部,整个营销团队(比如说)都在使用该应用程序。每个公司帐户都有该公司独有的数据。该公司独有的仪表板首选项。管理员是代表公司拥有编辑/管理员权限的公司(例如波音、耐克等)的经理/员工的人类用户。该“管理员”对仪表板首选项进行了一些更改,并希望“发布”这些更改,以便公司帐户的其他员工(营销团队的其他成员)可以查看更新的仪表板。但可能还没有,因此有“保存草稿”功能。

我不确定如何在 Django (DRF) 中以最符合行业标准的方式获得这两个功能 - 当我点击“发布”时,整个营销团队应该能够看到这些变化。 (这是一个 B2B 应用程序)。但是当我保存草稿时,我应该能够(以管理员身份)查看更改,但不能查看营销团队的其他成员。我会很感激任何帮助。谢谢!

【问题讨论】:

    标签: reactjs django django-rest-framework publish-subscribe


    【解决方案1】:

    您可以使用选择字段来管理模型的状态(在您的案例中为仪表板)

    示例代码如下

    models.py

    class Dasboard(models.Model):
        STATUS_CHOICES = (('draft', 'Save Draft'), ('published', 'Published'))
        status = models.Charfield(max_length=20, choices=STATUS_CHOICES)
        # Others models fields
    

    views.py

    def dashboard(request):
        objects = None
        if request.user.is_admin:
            # The admin users can see draft and saved (all Dashboard objects)
            objects = Dashboard.objects.all()
        else:
            # Others users are seeing only published
            objects = Dashboard.objects.filter(status='published')
        return render(request, 'app_name/dashboard.html', {'objects': objects})
    

    注意:这里我只使用了 Django filter 功能来根据用户类型检索一些数据。 但您也可以使用 Django permissions 进行更高级的处理。

    【讨论】:

    • 谢谢@Rvector。我是这里的新手,不幸的是没有足够的信誉来支持您的答案。我会尝试你的方法并恢复。非常感谢您的建议。
    • 如果它解决了你的问题,你只需要标记这个答案,因为它解决了你的问题,-)
    猜你喜欢
    • 1970-01-01
    • 2013-06-29
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2014-05-28
    • 1970-01-01
    • 2016-02-01
    相关资源
    最近更新 更多