Hi Mike , You can do the following using query parameters. Create a separate endpoint /getcities?city=... . You send the state and get array of cities. This endpoint would give you a json array of cities. On selection of state on the frontend, your event listener would make api call to above endpoint and get list of cities without a reload.
Thanks, Vishesh On Sun, 3 Dec, 2023, 04:22 Mike Dewhirst, <[email protected]> wrote: > On 3/12/2023 7:27 am, David Merrick wrote: > > Hi. I can put an item from the database into a select box ie Countries of > the World. What I want to know is saying, having chosen New Zealand from > the select box, how do I display all the cities of New Zealand in another > select box. > > The database has two tables. First one is Countries. The second table is > cities with populations and the foreign key of Countries table. > > Then having chosen Auckland a city in New Zealand I want to display > > Country > City > Population > > In a template. > > I have done this in Php, Javascript and Mysql already. > > > Check > https://simpleisbetterthancomplex.com/tutorial/2018/01/29/how-to-implement-dependent-or-chained-dropdown-list-with-django.html > > Also, I recently had a similar task with companies and divisions from > querysets and had trouble using the form.__init__() method. Here is an > alternative approach. You can tweak what the form displays by calling a > form method - here set_division_queryset(). In other words, you can > populate selection choices based on code elsewhere. In my case I did it > from within the view code like this ... > > # forms.py > > class List_Import(forms.Form): > > ... > > division = forms.ModelChoiceField( > > required=False, > > empty_label="Must select a Division", > > queryset=Division.objects.none(), > > ... > > def set_division_queryset(self, divqs): > > self.fields["division"].queryset = divqs > > > > def clean(self): > > cleaned_data = super().clean() > > selected_division = cleaned_data.get('division') > > available_divisions = self.fields['division'].queryset > > if selected_division not in available_divisions: > > self.add_error('division', 'Invalid choice. Please select a valid > division.') > > return cleaned_data > > > > # views.py > > @login_required(redirect_field_name="next") > > @ensure_csrf_cookie > > def list_import(request, template="list_import.html", context=None): > > ... > > # User model has get_company() method and Company has get_all_divisions() > > divqs = request.user.get_company().get_all_divisions() > > form.set_division_queryset(divqs) > > ... > > if request.method == 'POST': > > form = List_Import(request.POST, request.FILES) > > # because form.is_valid() needs available_divisions and we are > > # not using form.__init__(), we have to send divqs again > > form.set_division_queryset(divqs) > > if form.is_valid(): > > ... > > > > Cheers > > Mike > > > > > Cheers Dave > > > -- > Dave Merrick > > TutorInvercargill > > http://tutorinvercargill.co.nz > > Daves Web Designs > > Website https://tutorinvercargill.co.nz/daveswebdesigns/public_html/ > > Email [email protected] > > Ph 03 216 2053 > > Cell 027 3089 169 > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CA%2B%3DMcKYDfzhvQ8ueCKKccYX3gcQUmfoX9NXipqf%3DDipsXPzG7g%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CA%2B%3DMcKYDfzhvQ8ueCKKccYX3gcQUmfoX9NXipqf%3DDipsXPzG7g%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > > > -- > Signed email is an absolute defence against phishing. This email has > been signed with my private key. If you import my public key you can > automatically decrypt my signature and be sure it came from me. Your > email software can handle signing. > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/edf8f49f-295e-4ccd-a65f-1cad7b35880e%40dewhirst.com.au > <https://groups.google.com/d/msgid/django-users/edf8f49f-295e-4ccd-a65f-1cad7b35880e%40dewhirst.com.au?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CACaE8x6rtuxSqB1UGcNuztca6arvWXaOu1niYrjz%2BiytqReK%2Bg%40mail.gmail.com.

