如何过滤Django的ForeignKey表单下拉列表

时间:2020-02-04 00:29:35

标签: django

我有一个用于编辑(更新)记录的表单,/src/main/resources/keystore字段自动是一个下拉列表,这很好,但是如何过滤此列表? 例如,下拉列表中将填充整个用户列表。如何过滤此列表,使其仅显示target/classes处的项目?

帐户/模型.py

Author

builds / models.py

isDevice == True

forms.py

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    isDevice = models.BooleanField(default = False)
    ...

views.py

class BuildQueue(models.Model):
    Author =  models.ForeignKey(CustomUser,blank=True, null= True, on_delete=models.CASCADE)
    ...

1 个答案:

答案 0 :(得分:2)

由于UpdateView也继承自FormMixin,因此在您的buildQueueEdit中,您可以覆盖get_form,在该位置实例化表单,并且可以精确地在其中修改表单字段的{{1 }}。

queryset

更新

如果要更改下拉菜单中显示的文本,可以覆盖class buildQueueEdit(LoginRequiredMixin,UpdateView): model = BuildQueue form_class = BuildQueueEditForm template_name = 'buildQueue_edit.html' def get_form(self, form_class=None): form = super().get_form(form_class) form.fields['Author'].queryset = CustomUser.objects.filter(isDevice=True) return form 而不是choises。它对我有用。

queryset