在 Django 中编辑动态选择字段
Editing dynamic choice fields in Django
我有一个带有 Post
模型的标准 Django 博客,只有在模型上我为 approvers
添加了一个 ManyToManyField
,想法是后端通过 post 发给 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
模型创建一个有限状态机来管理它是否 draft/in approval/published,但我会希望能够更改 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)
要访问 post(假设 ID 为 5)被批准(降序)的顺序。您可以这样做
post = Post.objects.get(id=5)
post.approvers.order_by('-created_at')
您可以更改 created_at 的值来更改顺序。
或者你也可以制作一个整数字段来确定你的顺序
我有一个带有 Post
模型的标准 Django 博客,只有在模型上我为 approvers
添加了一个 ManyToManyField
,想法是后端通过 post 发给 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
模型创建一个有限状态机来管理它是否 draft/in approval/published,但我会希望能够更改 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)
要访问 post(假设 ID 为 5)被批准(降序)的顺序。您可以这样做
post = Post.objects.get(id=5)
post.approvers.order_by('-created_at')
您可以更改 created_at 的值来更改顺序。 或者你也可以制作一个整数字段来确定你的顺序