我对Django来说相对较新,而且我一直试图找到一种方法来实现一个可见的选择'选择的ManyToMany字段。根据在同一模型中找到的BooleanField,在UI中进行更改。
例如,假设我有一个代表不同工作的模型,以及一个与该工作模型有很多关系的工人模型。还假设有两种类型的工作者:管理器和非管理器,表示为BooleanField。如果你是一名经理,你有一些工人没有的工作,反之亦然。
我试图在没有创建新表的情况下找到一种方法,使得在manytomany关系中列出的作业依赖于' is_manager'的布尔值。也就是说,如果您要点击“is_manager”,则应该列出特定于经理的作业,但这些经理特定的作业与非经理人作业位于同一个表中 - 这些作业只是空白。
我一直在研究穿越领域等,但我提出的所有解决方案似乎都依赖于制作另一张桌子。我确信有一种方法可以做得更好。
谢谢。
答案 0 :(得分:0)
我建议采用这种方法:
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)