首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编辑Django中的动态选择字段

编辑Django中的动态选择字段
EN

Stack Overflow用户
提问于 2019-08-29 00:09:29
回答 1查看 120关注 0票数 0

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

代码语言:javascript
复制
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接口,但这似乎将事情混为一谈。我错过了一条更简单的路吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-29 02:42:34

为什么不再做一个这样的模型呢?

代码语言:javascript
复制
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)被批准的顺序(降序),.you可以这样做

代码语言:javascript
复制
post = Post.objects.get(id=5)
post.approvers.order_by('-created_at')

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57701413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档