首页 > 解决方案 > 如何使用模式作为 Django JSONField 的默认值

问题描述

我想使用带有属性的字典作为我的 JSONField 的默认值,而不是简单的空字典。

架构:

class FinancialDataSchema(marshmallow.Schema):
    capital = fields.Float(allow_none=True)  # Capital social
    revenue = fields.Float(allow_none=True)  # Chiffre d'affaires
    revenue_year = fields.Int(allow_none=True)  # Année du chiffre d'affaires
    account_published = fields.Boolean(allow_none=True)  # Publication des comptes

该模型:

class ServiceProvider(models.Model):
    financial_data = JSONField(validators=[MarshmallowValidator(schema=schemas.FinancialDataSchema)], default=dict)

问题:默认情况下,密钥serviceProvider.finalcial_data.capital不存在。 我希望创建密钥并将其值设置为无。

我试过的:

JSONField(validators=[MarshmallowValidator(schema=schemas.FinancialDataSchema)], default=schemas.FinancialDataSchema)

我有: TypeError: Object of type 'FinancialDataSchema' is not JSON serializable

标签: djangoschemamarshmallow

解决方案


推荐阅读