Как изменить Django MultipleChoiceField для отображения нескольких данных из нескольких таблиц и использования определенного значения

У меня есть 3 реляционные таблицы базы данных Django, и я хочу отобразить данные в колонке 'name_en' во всех таблицах как метки, а 'id' в таблице city как значение в 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   |-          |

Я хочу отобразить поле MultipleChoiceField в таком формате

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

Вы можете сделать что-то вроде этого:

class CityForm(models.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

Вы перебираете все города, получаете их район, а затем получаете провинцию района. Предполагается, что город может иметь только один район, а район может иметь только одну провинцию.

Вернуться на верх