Как реализовать Depended Drop Down List в администраторе Django? - PullRequest
0 голосов
/ 14 марта 2019

У меня есть несколько раскрывающихся списков, которые зависели друг от друга, как показано ниже: Провинция -> Город -> Бахш -> Дехестан -> Абади

мои модели:

from django.db import models

# Create your models here.
class Province(models.Model):
    id = models.CharField(primary_key=True, max_length=2)

    name = models.CharField(max_length=50)
    family = models.IntegerField()
    population = models.IntegerField()
    men = models.IntegerField()
    women = models.IntegerField()

    def __str__(self):
        return self.name


class City(models.Model):
    id = models.CharField(primary_key=True, max_length=4)

    province = models.ForeignKey(Province, on_delete=models.CASCADE)

    name = models.CharField(max_length=60)
    family = models.IntegerField()
    population = models.IntegerField()
    men = models.IntegerField()
    women = models.IntegerField()

    def __str__(self):
        return self.name


class Bakhsh(models.Model):
    id = models.CharField(primary_key=True, max_length=6)

    province = models.ForeignKey(Province, on_delete=models.CASCADE)
    city = models.ForeignKey(City, on_delete=models.CASCADE)

    name = models.CharField(max_length=70)
    family = models.IntegerField()
    population = models.IntegerField()
    men = models.IntegerField()
    women = models.IntegerField()

    def __str__(self):
        return self.name


class Dehestan(models.Model):
    id = models.CharField(primary_key=True, max_length=10)

    province = models.ForeignKey(Province, on_delete=models.CASCADE)
    city = models.ForeignKey(City, on_delete=models.CASCADE)
    bakhsh = models.ForeignKey(Bakhsh, on_delete=models.CASCADE)

    name = models.CharField(max_length=80)
    family = models.IntegerField()
    population = models.IntegerField()
    men = models.IntegerField()
    women = models.IntegerField()

    def __str__(self):
        return self.name


class Abadi(models.Model):
    id = models.CharField(primary_key=True, max_length=16)

    province = models.ForeignKey(Province, on_delete=models.CASCADE)
    city = models.ForeignKey(City, on_delete=models.CASCADE)
    bakhsh = models.ForeignKey(Bakhsh, on_delete=models.CASCADE)
    dehestan = models.ForeignKey(Dehestan, on_delete=models.CASCADE)

    name = models.CharField(max_length=90)
    family = models.IntegerField(null=True)
    population = models.IntegerField(null=True)
    men = models.IntegerField(null=True)
    women = models.IntegerField(null=True)

    def __str__(self):
        return self.name

и мой файл admin.py:

from django.contrib import admin
from .models import Province,City,Bakhsh,Dehestan,Abadi,License
# Register your models here.

admin.site.register(Province)
admin.site.register(City)
admin.site.register(Bakhsh)
admin.site.register(Dehestan)
admin.site.register(Abadi)

Но он не работает правильно.

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

У вас есть идея решить эту проблему?

...