Как изменить 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
Вы перебираете все города, получаете их район, а затем получаете провинцию района. Предполагается, что город может иметь только один район, а район может иметь только одну провинцию.