如何将自定义查找字段添加到模型

时间:2018-11-02 12:56:09

标签: django django-orm

在我的项目中,我有一个使用BooleanField表示特定状态的模型。

from django.db import models

class Foo(models.Model):
  is_closed = models.BooleanField(default=False)

一段时间后,我需要添加其他状态,因此我将is_closed字段更改为status,现在是CharFieldchoices

class Foo:
  status = models.CharField(max_length=1, default='O', choices=[
    ('O', 'opened'),
    ('H', 'on_hold'),
    ('C', 'closed'),
  ])

我可以处理迁移等,但是仍然有很多使用foo__is_closed的查询。由于现有的代码库广泛使用遗留字段,因此我必须更改所有出现的情况:

  • is_closed=Truestatus='C'
  • is_closed=Falsestatus__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

0 个答案:

没有答案