gpt4 book ai didi

python - Django 模型 : default callback: missing "self"

转载 作者:行者123 更新时间:2023-11-28 18:35:34 25 4
gpt4 key购买 nike

根据文档,如果您给模型字段一个默认的可调用对象,那么这个默认方法没有参数:

https://docs.djangoproject.com/en/1.8/ref/models/fields/#default

def contact_default():
return {"email": "to1@example.com"}

contact_info = JSONField("ContactInfo", default=contact_default)

我缺少对实例其他属性的访问权限。充其量我想访问 self

用例:

class Face(models.Model):
male=models.BooleanField()
beard=models.NullBooleanField()

如果面部不是男性,则beard 应设置为False。

默认值应仅应用于新实例。

最佳答案

您不能在函数中使用 self 来定义默认值。为此,您必须使用 pre_save 信号。

from django.db.models.signals import post_save, pre_save

@receiver(pre_save, sender=Face)
def check_beard(sender, instance=None, created=False, **kwargs):
if not instance.id and not instance.male: # Check instance id if it saving for first time, and set default
instance.beard = False

关于python - Django 模型 : default callback: missing "self",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756568/

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