python 验证Django.JSONFields中的键和值类型

hmmo2u0o  于 2022-12-10  发布在  Python
关注(0)|答案(1)|浏览(103)

问题陈述

我有一个包含JSONField的Django模型:

class DataModel(models.Model):
     dict_field = models.JSONField()

如何验证此JSONField的输入,使其仅接受键及其关联类型的预定义列表,如下所示:

"key1": bool
"key2": int
"key3": Optional[int]

我的尝试

我试图用Pydantic定义一个类来解决这个问题:

class DictModel(pydantic.BaseModel):
    key1: bool
    key2: int
    key3: Optional[int]

但是我找不到一种方法将这个模式传递给我的Django模型。
django有内置的功能来解决这种问题吗?

bpzcxfmw

bpzcxfmw1#

这是解决方案

您可以使用django模型的外键字段

class Keys(models.Model):
    key1 = models.BooleanField(blank=False) #bool
    key2 = models.PositiveIntegerField(blank=False) #int
    key3 = models.PositiveIntegerField(blank=True) #int[optional]
    
class DataModel(models.Model):
    dict_field = models.ForeignKey("Keys", on_delete=models.SET_NULL, null=True, blank=False, related_name="data")

相关问题