当两个字段都属于同一模型时,如何创建两个相互依赖的管理员ChoiceFields

时间:2018-07-10 13:07:09

标签: django postgresql django-admin choicefield

这个问题困扰了我一阵子,我似乎找不到任何有关如何实现它的资源。我正在使用最新的Django版本。

这个问题很简单。假设我们有一个看起来像这样的模型:

class Environment(models.Model):
    name = models.CharField(max_length=64)
    organization = models.CharField(choices=UsdDBActions().get_organizations())
    configuration = models.CharField(choices=UsdDBActions().get_configurations())

    def __str__(self):
        return f'{self.name}'

以上选择实际上是将organizationsconfigurations作为元组列表返回的选择。例如查询:

SELECT 
  id, 
  organization 
FROM some_table
 
SELECT 
  id, 
  configuration 
FROM some_other_table

然后在管理员中注册它:

class EnvironmentAdmin(admin.ModelAdmin):
    list_display = (
        'name',
        'configuration',
        'organization',
    )

admin.site.register(Environment, EnvironmentAdmin)

当用户选择一个组织时,我希望配置字段预先填充属于该组织的配置。问题在于organizationsconfigurations是外部数据库中的两个不同的表,因此我不会弄乱数据库的设置。

关于如何实现此目标的任何想法?

0 个答案:

没有答案