在 Django 中编辑动态选择字段



我有一个标准的 Django 博客,有一个Post模型,仅在模型上我为approvers添加了一个ManyToManyField,其想法是后端将帖子传递给 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,以便用户可以添加/删除/更改审批者的顺序,然后在前端处理解释并编写一些函数来与django-fsm接口,但这感觉它把事情混为一谈了太多。我错过了更简单的路线吗?

为什么不做另一个模型来做呢

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 的值以更改顺序。 或者您也可以创建一个整数字段来确定您的订单

最新更新