Fill an admin panel field and then retrive it and use to fill another field

I have this admin.py code:

class ElectionAdmin(admin.ModelAdmin):

    def get_form(self, request, obj=None, **kwargs):
        form = super().get_form(request, obj, **kwargs)
        print(obj.province)
        if obj:            
            if form.base_fields['province']:
                form.base_fields['city'].queryset = City.objects.filter(province_id=form.base_fields['province'])
            else:
                form.base_fields['city'].queryset = City.objects.none()
        else:
            form.base_fields['city'].queryset = City.objects.none()
        return form

and this models.py codes:

class Province(models.Model):
    name = models.CharField(max_length=70, unique=True, null=True, blank=True,)

class City(models.Model):
    province = models.ForeignKey("election.Province", on_delete=models.CASCADE)
    name = models.CharField(max_length=70, unique=True, null=True, blank=True,)

class Election(models.Model):
    province = models.ForeignKey("election.Province", on_delete=models.SET_NULL, null=True, blank=True,) 
    city = models.ForeignKey("election.City", on_delete=models.SET_NULL, null=True, blank=True,)
    

how to change the get_form function in admin panel to fill province field and then retrieve it and use to fill city field (just show cities that belong to that province)
with that get_form function I get this as output:

None

None

Back to Top