在我的项目中,我有一个使用BooleanField
表示特定状态的模型。
from django.db import models
class Foo(models.Model):
is_closed = models.BooleanField(default=False)
一段时间后,我需要添加其他状态,因此我将is_closed
字段更改为status
,现在是CharField
和choices
。
class Foo:
status = models.CharField(max_length=1, default='O', choices=[
('O', 'opened'),
('H', 'on_hold'),
('C', 'closed'),
])
我可以处理迁移等,但是仍然有很多使用foo__is_closed
的查询。由于现有的代码库广泛使用遗留字段,因此我必须更改所有出现的情况:
is_closed=True
至status='C'
,is_closed=False
至status__in=('O', 'H')
当然,在添加新状态后,我将不得不再次维护所有这些代码。
用另一种方式输入:Foo.objects.filter(is_closed=True)
用Foo
过滤所有status == 'C'
对象,而这:Foo.objects.filter(is_closed=False)
过滤用Foo
过滤所有status
对象'O'
等于'H'
或RegisterLookupMixin
。
我知道这里有Lookup Registration API,我想这是我所需要的,但是我不知道如何在模型中使用DateSerial
。