Django 字段的多级选择

pye*_*tti 5 django django-models django-orm django-admin

我有一个模型,我想使用 choice= 选项,但深度为三层。

class Doctor(models.Model):
...
zipcode = models.CharField(max_length=10, choices=AREAS, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

在管理员的“邮政编码”下拉列表中,我希望层次结构为:

Bronx
--Kingsbridge
----10463
----10471
--Fordham
----10458 
----10467
----10468 
Brooklyn
--Borough Park
----11204
etc.
Run Code Online (Sandbox Code Playgroud)

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

AREAS = (
    ('Bronx', (('Kingsbridge', ('10463', '10463'),),)),
    ...
)
Run Code Online (Sandbox Code Playgroud)

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

Bronx
--('10463', '10463')
Run Code Online (Sandbox Code Playgroud)

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

Siv*_*lam 1

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