0

I want empty job_users field before sending to the template. Because job_groups and job_users is dependent. I am calling ajax call when the group is select and users of that group will be displayed inside job_users. But now all users are displayed inside job_users select field.

class JobForm(forms.ModelForm):

    job_description = forms.CharField(widget=forms.Textarea(attrs={'rows':4, 'cols':15}))
    job_users = None
    class Meta:
        model = Jobs
        fields = [  
                    'job_name', 
                    'job_group',
                    'job_users',
                ]

    def __init__(self, *args, **kwargs):
        self.user_company = kwargs.pop('user_company', None)
        super().__init__(*args, **kwargs)
        self.fields['job_group'].queryset = None

self.fields['job_group'].queryset = None i am using this but it is giving me error

Raydel Miranda
  • 13,825
  • 3
  • 38
  • 60
Cipher
  • 2,060
  • 3
  • 30
  • 58
  • Possible duplicate of [Django ModelChoiceField: filtering query set and setting default value as an object](https://stackoverflow.com/questions/5329586/django-modelchoicefield-filtering-query-set-and-setting-default-value-as-an-obj) – Raydel Miranda Feb 05 '19 at 08:21

1 Answers1

0

Maybe you can do it like this:

class JobForm(forms.ModelForm):
    job_description = forms.CharField(widget=forms.Textarea(attrs={'rows':4, 'cols':15}))
    class Meta:
        model = Jobs
        fields = [  
                    'job_name', 
                    'job_group',
                ]

    def __init__(self, *args, **kwargs):
        self.user_company = kwargs.pop('user_company', None)
        super().__init__(*args, **kwargs)
        self.fields['job_group'].queryset = Jobgroup.objects.none()

But, it will throw error when you try to validate the form using form.is_valid(). So before doing that, update the queryset in the views like this:

def some_view_def(request):
    form = JobForm(request.POST)
    form.fields['job_group'].queryset = JobGroup.objects.filter(...)  # <-- here 
    if form.is_valid():
       # rest of the code
ruddra
  • 50,746
  • 7
  • 78
  • 101