我正在寻找一种方法来过滤django表单中的多项选择字段,以便只能看到用户数据库的特定部分。
我有三种模式:
Forskningsresultater
); User
模型);和PersonRes
)之间的定制M2M模型。这个定制的M2M模型已经使用Django Import / Export导入。假设我有300个用户的模型,并且一个特定的研究结果有5个作者。在表单中,我只想显示这5个作者的复选框,而不是全部300个。复选框用于更改participant
模型中的PersonRes
字段(请参阅下面的models.py
框)。因此,我想:
class Forskningsresultater(models.Model):
id = models.IntegerField(primary_key=True)
...
authors = models.ManyToManyField(settings.AUTH_USER_MODEL, through='PersonRes', blank=True,related_name='authors',verbose_name="Authors")
class PersonRes(models.Model):
id = models.IntegerField(primary_key=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,verbose_name="user")
forskningsresultater = models.ForeignKey(Forskningsresultater,on_delete=models.CASCADE, null=True,verbose_name="forskningsresultater")
participant = models.BooleanField(default=True)
class ForskningsresultaterApproveForm(forms.ModelForm):
authors = forms.ModelMultipleChoiceField(required=False,queryset=User.objects,label="Participants",widget=forms.CheckboxSelectMultiple)
class Meta():
model = Forskningsresultater
fields = ('authors')
widgets = {
}
我怀疑我应该在.objects.filter(...)
格式中使用queryset
,但我还没有找到有效的方法。