我有一个带有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}},但感觉好像使事情变得太多了。我想念一条简单的路线吗?
答案 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的值以更改顺序。 或者,您也可以创建一个整数字段来确定您的订单