Django场的多级选择

时间:2013-10-24 04:32:55

标签: django django-admin django-orm django-models

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

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

在admin的“zipcode”下拉列表中,我希望层次结构为:

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

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

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

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

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

这很奇怪,没有帮助。谁能看到我哪里出错了?这个层次结构可能吗?在应用程序中创建另一个名为Areas的表并使用manytomany字段会更聪明吗?我越是想到它,我越想我必须使用更多的领域。提前致谢

1 个答案:

答案 0 :(得分:0)

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