且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Django - 限制表单中选择字段的选择

更新时间:2023-01-20 23:33:06

You need to define an __init__() method in your form class which takes is_staff as an argument. is_staff can be a boolean value.

def __init__(self, *args, **kwargs):
    is_staff = kwargs.pop('is_staff')
    super(AddMovementForm, self).__init__(*args, **kwargs)
    if is_staff:
        self.fields['status'].choices = STAFF_STATUS_CHOICES
    else:
        self.fields['status'].choices = STATUS_CHOICES

When you initialize your form, you can do

AddMovementForm(is_staff=True)  # or
AddMovementForm(is_staff=False)