0

我有一个带有Post模型的标准 Django 博客,仅在我添加了ManyToManyFieldfor的模型上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字段更改为 aJSONField以便用户可以添加/删除/更改批准者的顺序,然后在前端处理解释并编写一些函数来与 接口django-fsm,但这感觉它混淆了太多东西。我错过了一条更简单的路线吗?

4

1 回答 1

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)

要访问批准(降序)的帖子(比如说 id 5)的顺序。你可以这样做

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

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

于 2019-08-29T02:42:34.177 回答