在Django

时间:2019-08-29 00:09:29

标签: django django-fsm

我有一个带有Post模型的标准Django博客,仅在该模型上我为ManyToManyField添加了approvers,想法是后端将帖子传递给2或更多批准者在内容发布之前对其进行确认。

class Post(models.Model):
    author = models.ForeignKey(
        get_user_model(), null=True, on_delete=models.SET_NULL)
    title = models.CharField(max_length=30)
    content = models.CharField(max_length=30)
    approvers = models.ManyToManyField(Approvers)

我可能会学习类似django-fsm的方法,以为Post模型创建一个有限状态机,以控制它是草稿/正在批准/已发布,但是我希望能够进行更改approvers字段,以便用户可以动态更改批准者(用户)的数量和顺序。

做到这一点的最佳方法是什么?我以为可以尝试将approvers字段更改为JSONField,以便用户可以添加/删除/更改批准者的顺序,然后在前端处理解释并编写一些与{ {1}},但感觉好像使事情变得太多了。我想念一条简单的路线吗?

1 个答案:

答案 0 :(得分:1)

为什么不制作其他模型来做

class PostApprover(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='approvers')
    user = models.ForeignKey(Approver, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)

要访问批准(降序编号为5的帖子)的顺序(降序)。您可以这样做

post = Post.objects.get(id=5)
post.approvers.order_by('-created_at')

您可以更改created_at的值以更改顺序。 或者,您也可以创建一个整数字段来确定您的订单