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

时间:2010-03-05 17:51:43

标签: django django-models

有没有简单的方法呢?

2 个答案:

答案 0 :(得分:2)

您可以将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>...]

答案 1 :(得分:1)

设置选项in __init__()