我使用了两个相互关联的 ChainedForeignKey 字段,但它们没有。为什么?

I use two interconnected ChainedForeignKey fields, but they don't. why?

我的问题: 我有三个模型。 il(省)、ilce(区)和 mahalle(邻里)。 我用 smart-select 过滤。在信息输入方面工作顺利。当我查看数据库时,我看到记录了 mahalle(邻里)数据。但是 mahalle(社区)小部件听起来很空洞。

我的模特:

class il(models.Model):
    adi = models.CharField(max_length=20)

class ilce(models.Model):
    ill = models.ForeignKey(il, on_delete=models.CASCADE)
    adi = models.CharField(max_length=35)

class mahalle(models.Model):
    ilcee = models.ForeignKey(ilce, on_delete=models.CASCADE)
    adi = models.CharField(max_length=50)


class User(AbstractUser):
    username = None
    email = models.EmailField(_('email address'), unique=True)
    .......
    kurum_il = models.ForeignKey('il', on_delete=models.SET_NULL, null=True, blank=False)
    kurum_ilce = ChainedForeignKey('ilce', chained_field="kurum_il", chained_model_field="ill", show_all=False, sort=False, null=True, blank=False)
    kurum_mahalle = ChainedForeignKey('mahalle', chained_field="kurum_ilce", chained_model_field='ilcee', show_all=False, sort=False, null=True, blank=False)

即使我输入并保存了社区信息,也没有出现在管理页面上 related screenshot

Django-smart-selects 2018 年的最后一个版本看起来很久没有维护了。

然而,针对它提出/讨论的问题很少可能与您的问题相关,其中之一 #237. As a solution it has this Pull Request.js 文件几乎没有改动(实际上它只是注释掉一行)。

由于它尚未包含在正式版本中,您可以手动应用这些更改并提供新的 .js 文件来覆盖包一:

  • 从 master 分支复制 chainedfk.js 到你的项目

  • 将其放在 static files 目录中的 'smart-selects/admin/js/chainedfk.js' 路径中:

    • 放置在您应用的 static 目录中,并使该应用出现在 之前 smart_selects in INSTALLED_APPS

    • 或根据您的喜好使用相同的 static 目录或其他路径,但在 STATICFILES_DIRS 中指定 static 目录的路径(更优选,不依赖于顺序在 INSTALLED_APPS)

  • 编辑此文件,应用 changes of this Pull Request 和您选择的任何其他更改。