代码之家  ›  专栏  ›  技术社区  ›  Luiz C.

在运行时设置模型字段选择属性?

  •  5
  • Luiz C.  · 技术社区  · 15 年前

    有什么简单的方法吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Brian Luft    15 年前

    您可以将choices属性设置为任何iterable: http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.choices

    我自己还没有测试过这个,所以我不确定什么时候实际评估了choices属性,但是您可以分配一个生成器函数来计算您想要的选择。

    您也可以使用模型post_init信号进行调查: http://docs.djangoproject.com/en/1.1/ref/signals/#post-init

    这将使您能够在Django初始化模型之后访问它,因此您可以在那时设置选项。您可能希望像这样通过“meta”接口:

    instance._meta.get_field_by_name('FIELD_NAME')[0].choices = [<choices>...]
    
        2
  •  1
  •   Ignacio Vazquez-Abrams    15 年前

    设定选择 in __init__() .