【发布时间】:2018-01-17 16:05:09
【问题描述】:
我无法重置我的 init 默认值。
我有一个有选择但没有默认值的模型。 我有这个模型的两个代理模型,默认初始化。
class Test(models.Model):
CHOICE_LIST = ((1, 'Choice1'),(2, 'Choice2')
type_test = models.CharField(choices=CHOICE_LIST, max_length=1)
class Test1Manager(models.Manager):
def get_queryset(self):
return super(Test1Manager,self).get_queryset().filter(type_test='1')
class Test2Manager(models.Manager):
def get_queryset(self):
return super(Test2Manager,self).get_queryset().filter(type_test='2')
class test1(Test):
objects = Test1Manager()
class Meta :
proxy = True
def __init__(self, *args, **kwargs):
self._meta.get_field('type_test').default = '1'
super(Test1, self).__init__(*args, **kwargs)
class test2(Test):
objects = Test2Manager()
class Meta :
proxy = True
def __init__(self, *args, **kwargs):
self._meta.get_field('type_test').default = '2'
super(Test2, self).__init__(*args, **kwargs)
在管理员中,当我添加一个 Test1 的实例时,type_test 的值是 1,正如我所料。 当我添加一个Test2的实例时,值也是正确的,默认值为2。
但是当我添加一个Test实例时,该字段的默认值是最后一个打开的。 事实上,如果在我打开 test2_admin 之前,Test 中的字段默认值为 2。
所以我想在测试模型上重置这个字段的默认值。
我试过设置default=None,但是在这种情况下,选择字段只显示值1和2,没有空值,所以默认情况下,该字段的值将是第一个。
感谢您的帮助,非常抱歉我的英语不好:)
【问题讨论】:
-
如果给
CHOICE_LIST添加一个空选项怎么办?例如,请参见此处:stackoverflow.com/questions/37223688/…