ManyToMany模型字段,其中选项根据布尔值进行更改



我对Django还比较陌生,我一直在尝试找到一种方法来实现ManyToMany字段,该字段在UI中的可见"选项"会根据同一模型中的BooleanField进行更改。

例如,假设我有一个代表不同工作的模型,以及一个与这个工作模型有很多关系的工人模型。还假设有两种类型的工人:经理和非经理,后者表示为BooleanField。如果你是一名经理,你就有一些员工没有的工作,反之亦然。

我正试图找到一种方法,在不创建新表的情况下,使其成为many-many关系中列出的作业依赖于"is_manager"的布尔值。也就是说,如果单击"is_manager",它应该列出特定于经理的工作,但这些特定于经理工作与非经理工作位于同一个表中——这些工作将为空。

我一直在研究贯穿领域等,但我提出的所有解决方案似乎都取决于制作另一张表。不过,我相信有办法做得更好。

谢谢。

我建议这种方法:

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ['jobs', 'username']
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        instance = kwargs.get('instance', None)
        if instance is not None:
            if instance.is_manager:
                self.fields['jobs'].queryset = Jobs.objects.filter(manager=True)
            else:
                self.fields['jobs'].queryset = Jobs.objects.filter(manager=False)

相关内容

  • 没有找到相关文章

最新更新