[英]How to follow HINT: Use a callable instead, e.g., use `dict` instead of `{}`?
如何遵循警告?
models.py
from django.contrib.postgres.fields import JSONField
from django.db import models
from django_extensions.db.models import TimeStampedModel
class UnderwritingValidator(TimeStampedModel):
plan = models.PositiveIntegerField(null=True, blank=True, unique=True)
logic = JSONField(default=dict(
accept_list=[],
reject_list=[]
))
然后makemigrations
WARNINGS:
uw_validators.UnderwritingValidator.logic: (postgres.E003) JSONField default should be a callable instead of an instance so that it's not shared between all field instances.
HINT: Use a callable instead, e.g., use `dict` instead of `{}`.
Migrations for 'uw_validators':
uw_validators/migrations/0002_auto_20191011_0321.py
- Remove field accept_list from underwritingvalidator
- Remove field reject_list from underwritingvalidator
- Add field logic to underwritingvalidator
软件:
postgres:10.9
Django==2.2.5
问题:
那不是可调用的。
您在这里有两个选择:
dict
作为默认值; 如果没有提供,这将导致您的模型使用空的 dict {}
:class UnderwritingValidator(TimeStampedModel):
plan = models.PositiveIntegerField(null=True, blank=True, unique=True)
logic = JSONField(default=dict)
def get_default_something():
return {'accept_list': [], 'reject_list': []}
class UnderwritingValidator(TimeStampedModel):
plan = models.PositiveIntegerField(null=True, blank=True, unique=True)
logic = JSONField(default=get_default_something)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.