gpt4 book ai didi

python - 如何遵循 HINT : Use a callable instead, 例如,使用 `dict` 而不是 `{}` ?

转载 作者:行者123 更新时间:2023-11-30 21:54:50 29 4
gpt4 key购买 nike

如何遵循警告?

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

问题:

  1. 我不会犯错误吗?如果安全的话我会忽略这个警告并删除我的简短警告说明
  2. 如何完全遵循警告?

最佳答案

这不是可调用的。

这里有两个选择:

  1. 默认使用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)

    关于python - 如何遵循 HINT : Use a callable instead, 例如,使用 `dict` 而不是 `{}` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58333826/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com