【发布时间】:2019-04-08 19:05:43
【问题描述】:
在我的应用模型内部,我使用 IntegerRangeField 字段:
from django.db import models
from django.contrib.postgres.fields import IntegerRangeField
from django.contrib.postgres.validators import RangeMinValueValidator, RangeMaxValueValidator
from psycopg2.extras import NumericRange
class MyModel(models.Model):
...
field = IntegerRangeField(default=NumericRange(400, 600), validators=[
RangeMinValueValidator(1),
RangeMaxValueValidator(1000)
])
...
“default”属性仅在管理面板 UI 中使用,在其他任何地方都不需要。
如果我在迁移后添加它们,它们会顺利运行。但是,如果我在运行 makemigrations 之前添加它们,我会收到以下消息:
ValueError: Cannot serialize: NumericRange(400, 600, '[)') 有 一些值 Django 无法序列化到迁移文件中。
我什至不希望将默认值保存到我的 PostgreSQL 数据库中,我只想在每次运行 makemigrations 时都不必删除并恢复它们。
有什么想法吗?
(不起作用:具有“lower”和“higher”属性、单个整数、字符串、元组的自定义对象)
Python:3.6.6,Django:2.1.2,PostgreSQL:11.0
【问题讨论】:
标签: python django postgresql django-models django-admin