Django address city-district-neighbourhood choisefield
Я пытался построить форму, в которой можно выбрать адрес города-района и данные о районе в соответствии с отношением город-район.
Например, когда пользователь выбирает город, я хочу видеть районы города.
Я новичок в Django и кодировании, и я искал и пытался в течение нескольких дней. Вот мои коды:
Models.py:
class Adresler(models.Model):
il = models.CharField(max_length=50,verbose_name="il", null=True)
ilçe = models.CharField(max_length=50,verbose_name="ilçe", null=True)
mahalle = models.CharField(max_length=50,verbose_name="mahalle", null=True)
PK = models.CharField(max_length=50,verbose_name="PK", null=True)
def __str__(self):
return self.mahalle
class Fukara(models.Model):
uyruk = models.CharField(max_length=50,verbose_name="Uyruk", null=True)
kimlik_no = models.CharField(max_length=50,verbose_name="Kimlik No", null=True)
ad_soyad = models.CharField(max_length=50,verbose_name="Ad Soyad", null=True)
telefon = models.CharField(max_length=50,verbose_name="Telefon", null=True)
meslek = models.CharField(max_length=50,verbose_name="Meslek", null=True)
cinsiyet = models.CharField(max_length=50,verbose_name="Cinsiyet", null=True)
yaş = models.IntegerField(verbose_name="Yaş", null=True)
calisan_sayisi = models.IntegerField(verbose_name="Çalışan Sayısı", null=True)
aylik_gelir = models.IntegerField(verbose_name="Aylık Gelir",null=True)
durum= models.CharField(max_length=50,verbose_name="Durum", null=True)
fert_sayisi = models.IntegerField(verbose_name="Aile Ferdi Sayısı", null=True)
talep = models.CharField(max_length=150,verbose_name="Talepler", null=True)
aciklama = models.CharField(max_length=150,verbose_name="Açıklama", null=True)
adres_il = models.CharField(max_length=50, null=True,verbose_name="İl")
adres_ilce = models.CharField(max_length=50, null=True,verbose_name="İlçe")
adres_mahalle = models.CharField(max_length=50, null=True,verbose_name="Mahalle")
adres_adres = models.CharField(max_length=50,verbose_name="Adres", null=True)
kayit_eden = models.CharField(max_length=50,verbose_name="Kayıt Eden", null=True)
kayit_tarihi = models.DateField(verbose_name="Kayıt Tarihi", null=True)
dagitim_turu = models.CharField(max_length=50, verbose_name="Şahıs/Kurumsal", null=True)
kurum_vergi_no = models.IntegerField(verbose_name="Vergi/Kimlik No", null=True)
sorumlu_kisi = models.CharField(max_length=50, verbose_name="Sorumlu Kişi", null=True)
il_listesi = models.ForeignKey(Adresler,on_delete=models.SET_NULL, null=True)
def __str__(self):
return self.kimlik_no
Класс "Adresler" содержит данные о городе-районе-соседстве, а в классе Фукара adres_il обозначает город, adres_ilce - район и adres_mahalle - соседство.
forms.py:
class FukaraGiris(forms.ModelForm):
class Meta:
model = Fukara
fields = ['uyruk','kimlik_no','ad_soyad','telefon','cinsiyet','yaş','meslek','fert_sayisi','calisan_sayisi','aylik_gelir','durum','kayit_tarihi','adres_il','adres_ilce','adres_mahalle','adres_adres','talep','aciklama','kayit_eden']
widgets = {
'cinsiyet': forms.Select(choices=cinsiyet,attrs={'class': 'form-control'}),
'durum': forms.Select(choices=durum,attrs={'class': 'form-control'}),
'kayit_tarihi': forms.DateInput( format=('%Y-%m-%d'),attrs={'class': 'form-control', 'type': 'date'}),
}
def __init__(self, *args, **kwargs):
super(FukaraGiris, self).__init__(*args, **kwargs)
self.fields['kayit_eden'].widget.attrs['readonly'] = True
self.fields['kayit_eden'].required = False
self.fields['aciklama'].required = False
UYRUK = Uyruk.objects.values_list('uyruklar', 'uyruklar')
self.fields['uyruk'] = forms.ChoiceField(choices=(*UYRUK,))
Мне нужны adres_il(город), adres_ilce(район) и adres_mahalle(микрорайон) в качестве choisefileds. Не могли бы вы мне помочь, как это сделать? Заранее спасибо.