0

(我的英语不好,抱歉)我在创建按位置搜索的表单时遇到问题:我目前的 form.py 如下:

from models import City, Zone

class SearchForm1(forms.Form):
   cityf = forms.ModelChoiceField(queryset=City.objects.all(), empty_label="none")
   zonef = forms.ModelChoiceField(queryset=Zone.objects.all(), empty_label="none")

但这会显示所有城市和地区都存在于数据库中,我想做的是在第一个字段中显示所有城市,在第二个字段中仅显示与所选城市对应的那些区域。

我试图这样做:

class SearchForm1(forms.Form):
   cityf = forms.ModelChoiceField(queryset=City.objects.all(), empty_label="none")
   zonef = forms.ModelChoiceField(queryset=City.objects.get(
             name_city="cityf").zone_set.all(), empty_label="none")

^ 但我收到了这个##ERROR:^

Exception Type: DoesNotExist
Exception Value:

City matching query does not exist.

Exception Location:

我也一直在看这个: http: //www.stereoplex.com/blog/filtering-dropdown-lists-in-the-django-admin但最后它不需要离开它有人可以帮助我?

4

2 回答 2

1

你不能这样做。由于在呈现表单时,尚未选择城市(第一个字段)。

您可以以两步向导式的形式进行操作。第一种形式只有城市,第二种形式只有区域。在第二种形式中,您使用第一种形式中选择的城市过滤区域。

或者,您可以使用 javascript 来过滤第二个字段,具体取决于第一个字段。

于 2011-11-17T14:12:27.570 回答
0

您可能想在django smart selects中使用 Grouped Selects 功能。查看这个重复问题的答案:

https://stackoverflow.com/a/8390892/538471

于 2011-11-27T14:01:34.550 回答