如何在具有 Jsonfield 的模型中发布 django rest 中的数据

Posted

技术标签:

【中文标题】如何在具有 Jsonfield 的模型中发布 django rest 中的数据【英文标题】:how to post data in django rest in a model that has Jsonfield 【发布时间】:2021-11-14 10:31:39 【问题描述】:

我的任务是创建一个简单的发布 API,以通过包含全名、地址、电话等字段的联系表单向访问者发送消息。但我不必创建模型,而是必须使用已经存在的模型,该模型具有一个杰森菲尔德。现在我需要做的是使用包含名称、地址等所有字段的 jsonfield。

class Core(models.Model):
    """
    Model that saves the corresponding credentials for the slug.
    """

    slug = models.CharField(max_length=255, null=False)
    example = models.JSONField(null=False, default=dict)

    def __str__(self) -> str:
        return self.slug

如果通过创建模型以常规方式完成,它会是这样的。

class Contacts(models.Model):
    full_name = models.CharField(max_length=100,blank=True,default="")
    email = models.EmailField()
    phone = models.CharField(max_length= 16)
    address = models.CharField(max_length=255,blank=True,default="")
    message = RichTextField()

    def __str__(self):
        return self.email

现在,我应该如何在不创建联系人模型的情况下将这些字段数据发送到字典中而不发送到 JsonField 中?

【问题讨论】:

【参考方案1】:

首先,这个问题不清楚。请以更清晰的方式提出您的问题。希望下面的方法对你有帮助。

此字段保存数据,如;

"full_name":"John Doe", "email": "johndoe@doe.com", "phone":"XXXXXXXXXXX"

您可以创建字典并分配给字段。你也可以像这样创建json数据;

json_example = json.dumps(full_name="John Doe, email="johndoe@doe.com, phone="XXXXXXXXXXX")

然后创建一个Core对象;

core = Core(example = json_example)
core.save()

【讨论】:

以上是关于如何在具有 Jsonfield 的模型中发布 django rest 中的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django JSONField 数据上聚合(最小/最大等)?

如何在 django rest 框架中的 postgres JSONField 上应用过滤器?

Django中的JSONField即使在POST请求后仍保持为空

Django JSONField 不保存 0 值

如何从 django 模型中为模型字段定义 json 类型

Django 模型过滤器以 JSONField 为目标,其中键包含连字符/破折号