我无法重置 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)
在admin中,当我添加Test1的实例时,type_test的值为1,正如我预期的那样。 当我添加Test2的实例时,该值也是正确的,默认值为2.
但是当我添加一个Test实例时,该字段的默认值是最后一个打开的。 事实上,如果在我打开test2_admin之前,Test中字段的默认值将为2.
所以我想在Test model上重置这个字段的默认值。
我尝试设置default = None,但在这种情况下,select字段只显示值1和2,没有空值,因此默认情况下,此字段的值将是第一个。
感谢您的帮助,所以抱歉我的英语不好:)
答案 0 :(得分:0)
所以我试图在我的choice_list中添加一个空值,并默认为我的类Test设置它。
如果我将其添加到我的字段中,则没有任何反应,因为我的代理的 init 会覆盖默认值。 但是如果我在我的类 init 上添加它,而不是重置此类的值,则重置所有代理类的值。也许是因为代理类继承了父 init 。
因此,如果父类具有自己的默认值,则无法为代理分配默认值。