如何修改Django multiechoicefield来显示来自多个表的多个数据,并使用特定的值



我有3关系Django数据库表,我想显示数据在'name_en'列在所有表作为标签,'id'在城市表作为值在Django MultipleChoiceField

| Example Table Structure |
Table 1 (province):
| id       | name_en    |name_ta    |
| -------- | ---------- |---------- |
|1         | Western    | -         |
|2         | Central    | -         |
Table 2 (district):
| id       | ForeignKey  | Name_en     |Name_ta |
| -------- | ----------- | ----------- |------- |
|1         | 2           | Kandy       | -      |
|2         | 1           | Colombo     | -      |
Table 3 (city):
| id       | ForeignKey  | Name_en    |Name_ta    |
| -------- | ----------- | ---------- |---------- |
|1         | 1           | Uduwela    | -         |
|2         | 2           | Homagama   |-          |

我想用这种格式显示multiechoicefield

<select>
<option value='1(city id)'>Western,Colombo,Homagama</option>
</select>

你可以这样做:

class CityForm(forms.Form):

cities = forms.MultipleChoiceField(
choices=[]
)
def __init__(self, *args, **kwargs):

cities = City.objects.all()
cities_list = []
for city in cities:
cities_list.append([city.id, '{0}, {1}, {2}'.format(
city.name_en,
city.district.name_en,
city.province.name_en
)])

super().__init__(*args, **kwargs)
self.fields['cities'].choices = cities_list

循环遍历所有城市,得到它们的地区,然后得到该地区的省份。假设一个城市只能有一个区,一个区只能有一个省。

最新更新