字段的 Django 多级选择

Posted

技术标签:

【中文标题】字段的 Django 多级选择【英文标题】:Django Multiple Levels Choices for Field 【发布时间】:2013-11-02 15:10:52 【问题描述】:

我有一个模型,我想使用choices= 选项,但深度为三个级别。

class Doctor(models.Model):
...
zipcode = models.CharField(max_length=10, choices=AREAS, null=True, blank=True)

在管理员的“邮政编码”下拉菜单中,我希望层次结构是:

Bronx
--Kingsbridge
----10463
----10471
--Fordham
----10458 
----10467
----10468 
***lyn
--Borough Park
----11204
etc.

然后,如果我选择邮政编码 10463,Doctor 对象将与布朗克斯的 Kingsbridge 地区相关联。我正在尝试各种不同的方式。我最接近的是使用这个:

AREAS = (
    ('Bronx', (('Kingsbridge', ('10463', '10463'),),)),
    ...
)

不幸的是,这给了我这个层次结构:

Bronx
--('10463', '10463')

这很奇怪而且没有帮助。任何人都可以看到我要去哪里错了吗?这种层次结构可能吗?在应用程序中创建另一个名为 Areas 的表并使用多对多字段会更聪明吗?我想得越多,我就越认为我必须使用多对多字段。提前致谢

【问题讨论】:

【参考方案1】:

根据https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.choices, 似乎只支持 2 级层次结构。如果您需要超过 2 个级别,则需要使用自定义小部件(或)具有外键关系的多个字段。

【讨论】:

我认为必须如此。实际上,我最终只是创建了另一个表并使用了外键。感谢您的链接 有任何用于此目的的软件包吗?

以上是关于字段的 Django 多级选择的主要内容,如果未能解决你的问题,请参考以下文章

Django 多项选择字段/复选框选择多个

在 Django 中,根据模型中其他字段中选择的值删除选择字段下拉列表中的选项

django - 如何在选择字段中取回一个空的选择?

django - 表单中的动态选择字段

Django,选择选项字段

Django,如何从模型表单的选择字段中删除空白选择?