python - 如何排除 django 模型中的选择字段值?

标签 python python-3.x django django-models django-forms

form 根据登录用户的用户组,如果登录用户不属于某个组,则应删除一些 Story_status 值。我有一个生产者组,如果登录用户不属于生产者组,则我想要从 story_status 中删除选择字段值 footage Ready。我的代码不排除这些值

模型.py

class Article(models.Model):
    STORY_STATUS = {
        ('story not done', 'story not done'),
        ('story finish', 'story finish'),
        ('Copy Editor Done', 'Copy Editor Done'),
        ('footage ready', 'footage ready')
    }

    title = models.CharField(max_length=255, help_text="Short title")
    story_status = models.CharField(choices=STORY_STATUS)

输出.html

class ArticleForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(ArticleForm, self).__init__(*args, **kwargs)
        if not self.user.groups.filter(name__iexact='producer').exists():
            self.queryset = Article.objects.exclude(story_status='footage ready')

    class Meta:
        model = Article
        fields = [
            'title',
            'story_status'
        ]

最佳答案

尝试使用 init 方法覆盖选择,例如

STORY_STATUS = [
    ('story not done', 'story not done'),
    ('story finish', 'story finish'),
    ('Copy Editor Done', 'Copy Editor Done'),
    ('footage ready', 'footage ready')
]

story_status_config = {
    'producer': ['footage ready'],
    'other_group': ['story finish']
}

def __init__(self, *args, **kwargs):
    self.user = kwargs.pop('user', None)
    super(ArticleForm, self).__init__(*args, **kwargs)
    for group,exclude_vals in story_status_config:
        if not self.user.groups.filter(name__iexact=group).exists():
            self.fields['story_status'].choices = [x for x in STORY_STATUS if x[0] not in exclude_vals]

关于python - 如何排除 django 模型中的选择字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64204652/

相关文章:

python - 如何比较 Pandas 数据框的聚合部分?

python-3.x - 从 beautifulsoup4 网络抓取结果中删除特定的 <h2 类>

python - 如何过滤包含列表中所有值的 DataFrame 列?

python - MapReduce在处理大文件,抓取大量数据页面并将其插入Hbase中有用吗?

python-2.7 - ipython/pylab/matplotlib安装初始化报错

ajax - 如何在Django中实现点击流或点击跟踪器功能?

Django 求和与计数

Django:查询用户所属组的过滤器

python - 如何使用 Poetry 将 Python 包发布到 CodeArtifact?

python - PyUSB 与 Windows、libusb1 和 libusb-win32 后端不工作