有没有简单的方法可以做到这一点?在运行时设置模型字段选择属性?
回答
您可以设置选择属性可迭代: http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.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>...]
这几乎工作。我可以看到当前的选择,但如果我尝试将其设置为不同的值,则会出现以下错误:AttributeError:无法设置属性。 – 2010-03-05 18:37:24
在字段来源中,您可以看到“选项”是只读属性: http://code.djangoproject.com/browser/django/tags/releases/1.1.1/django/db/models /fields/__init__.py#L296 尝试将设置改为“_choices”。这在shell中起作用,但我不会对意想不到的后果作任何保证。 – 2010-03-05 19:26:45
是的!这对我行得通。谢谢一堆。 – 2010-03-05 19:43:33
- 1. 迭代字典时动态设置类属性(模型字段)
- 2. 在运行时设置sample_variables属性
- 3. 在运行时设置href属性
- 4. 在运行时设置类属性
- 5. 在运行时Log4Php属性设置
- 6. 在运行时设置点属性?
- 7. 如何在运行时设置字段
- 8. 如何在Django中使用模型字段设置动态选择字段
- 9. Laravel 5.2根据输入字段设置模型属性
- 10. backbone.js设置模型属性内部字段
- 11. 设置属性@运行时间
- 12. Django ORM:在字段属性上选择
- 13. 按外键父模型的字段设置选择
- 14. 访问模型字段属性在Django
- 15. 在模型对象上设置属性?
- 16. 设置一个计算属性的从属键在运行时
- 17. 模型设计问题:运行时的自定义字段?
- 18. 得到属性类型在运行时
- 19. 设置属性打破核心选择
- 20. 设置多个JavaBeans属性选择
- 21. 使用CMB2选择字段类型设置默认选项
- 22. 根据另一个属性在后台设置模型属性?
- 23. Rails中模型属性的懒设置?
- 24. 设置模型属性的初始值?
- 25. 配合:无法设置属性模型
- 26. yii2 datapicker设置模型的endDate属性
- 27. Spec RSpec模型属性设置器
- 28. 无法设置模型MVC属性
- 29. 在运行时在代码中设置布局属性
- 30. 如何在运行时在Converter对象上设置属性
出于好奇,你有什么用途呢? – 2010-03-05 19:37:47
我正在尝试从数据库中提取选择列表。我也在使用翻译,因为他们在数据库中,所以我不能标记翻译的字符串。 – 2010-03-08 14:50:21
这些选择是暴露给用户还是仅用于内部逻辑?我想知道这是否可以在表单级别上处理,因为在那里动态地构造选择更为常见。改变模型层面的选择似乎无法摆脱首先在模型上设置选择的目的。也许这可以用不同的方式来解决? – 2010-03-08 16:14:53