如何在 django 中为分组选项设置默认值
Posted
技术标签:
【中文标题】如何在 django 中为分组选项设置默认值【英文标题】:how to set the default value for grouped choices in django 【发布时间】:2011-04-26 19:53:22 【问题描述】:如果我对 models.IntegerField 有一些分组选择,我如何将默认值设置为这些选择的组合
例如:
class ForumThread():
STATE_CHOICES = (
('Sticky', (
(True, 'True'),
(False, 'False') ) ),
('Blocked', (
(False, 'False')
(True, 'True') ) ),
)
name = models.CharField(max_length= 256)
description = models.CharField(max_length= 256)
state = models.IntegerField(choices= STATE_CHOICES)
对于这个类,我想将“状态”字段的默认设置为 Blocked -> False and Sticky -> False
谢谢
【问题讨论】:
【参考方案1】:您误解了分组选择的作用。它们仅用于演示 - 您的 IntegerField 只能表示一个值,在您的情况下将是 0 或 1(对于 False 或 True)。这些组唯一要做的就是在选择框中提供标题。在设置中,您必须为 Sticky 和 Blocked 设置单独的值。
【讨论】:
【参考方案2】:您需要两个整数字段 - 一个用于 Sticky,一个用于 Blocked。
然后您可以在字段本身中以通常的方式设置默认值。
如果您希望字段互斥,有多种方法可以解决此问题 - 修改保存方法可以很好地平衡易用性和直接性。
http://docs.djangoproject.com/en/dev/ref/models/instances/#saving-objects
【讨论】:
以上是关于如何在 django 中为分组选项设置默认值的主要内容,如果未能解决你的问题,请参考以下文章
Django:如何在管理视图中为 readonly_field 设置默认随机值?
如何在 Django Guardian 中为用户定义默认权限?
如何在表值函数中为 CTE 设置 maxrecursion 选项