如何更改Django模型中的选项?
我有一个Django模型,它使用了choices
这个属性。
COLOR_CHOICES = (
('R', 'Red'),
('B', 'Blue'),
)
class Toy(models.Model):
color = models.CharField(max_length=1, choices=COLOR_CHOICES)
我的代码现在已经在生产环境中运行了,但我想添加一些新的选项。
COLOR_CHOICES = (
('R', 'Red'),
('B', 'Blue'),
('G', 'Green'),
)
我该怎么做呢?Django会用数据库的约束来强制执行这些选项吗?我需要进行数据库迁移吗(我在用South)?还是说Django只是通过Python代码来限制选项,我只需要修改代码然后重启就可以了?
谢谢!
2 个回答
2
这个字段是 models.CharField
,所以数据库会把它当作其他在 Django 中设置的 models.CharField
来处理 :)
不,它不会强制要求选择,你也不需要去修改你的数据库。
14
Django在数据库层面并不会强制使用选项,它只是用这些选项来展示界面和进行验证。如果你想让这些选项更“动态”,比如在不同的服务器上使用不同的选项,你可以在settings.py
文件中定义它们:
from django.conf import settings
COLOR_CHOICES = getattr(settings, 'COLOR_CHOICES',(
('R', 'Red'),
('B', 'Blue'),
('G', 'Green'),
))
这样你就可以在settings.py
中定义不同的选项了(不需要进行任何数据库迁移!)。