如何防止在 DAL 相关选择字段中选择一个选项

How to prevent selecting a choice in DAL dependent choice field

我在我的应用程序中使用 Django Autocomplete Light。在一些观点中,我有与父子关系相关的选择(例如 Country < Cities)。

为了选择链接,我使用 DAL documentation 中规定的“forward”函数,如下所示。

    'country': autocomplete.ModelSelect2(url='country-autocomplete',
                                         attrs={'style': 'width:80px', 'data-placeholder': 'Click here to select...',
                                                'data-minimum-input-length': 2}),
    'city': autocomplete.ModelSelect2(url='city-autocomplete',
                                      forward=['country'],
                                      attrs={'style': 'width:40px', 'data-placeholder': 'Click here to select...',
                                             'data-minimum-input-length': 2}),

该页面按预期正常工作,但需要注意的是,在选择城市之前没有选择国家/地区选择,"city" 选择字段显示所有可用选项(以下是显示场景的图像)。

场景1.国家选项未填写:

在这种情况下,我们可以看到当只有 "city" 选择字段时,会生成名称中带有“lo”的所有城市选择used(无需先填写“country”选项)。

场景2.国家选项已填:

In the second instance, when the city choice field is selected after picking up the "country" choice first, the names generated in the "city" choice字段 仅限于国家 "United Kingdom".

我的问题是:

有没有一种方法可以阻止从子字段(字段“city”中进行选择,而无需首先从父字段中选择一个选项(此处,“国家")?我不反对使用 jQuery 以防 DAL 中没有可用的内置选项。

只需在 city 自动完成中使用过滤器 view:

else:
    qs = qs.filter(country='')

工作完成了。现在,如果 country 选择字段留空,city 选择字段不会生成任何选择。