我从一个旧系统"继承"了一个数据库,其中(在其他丑陋的东西中)某个表中的列应该是布尔值,而是一个带有'N'或'0'的varchar(1)表示为false,'Y'或'1'表示true(代码的不同部分在编写时使用一个或另一个约定,但显然所有这些部分在读取时都能识别).
我将最初用Java编写的系统移植/重写到Python + Django,我将能够关闭旧的并且只在端口完成时"清理"数据库混乱.
我想让模型类中的字段在外部显示为布尔值,因此当数据库最终得到纠正时,我在代码中唯一要做的就是将字段更改为普通的BooleanField.有一个简单的方法吗?
您可以通过继承django.db.models.Field并实现to_python方法来创建自己的字段类,其行为与您想要的一样,例如
from django.db import models
class MyField(models.CharField):
def to_python(self, value):
if value in ('Y', '1'):
return True
if value in ('N', '0'):
return False
raise ValueError
Run Code Online (Sandbox Code Playgroud)
希望这会给你一些见解:)
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |