【问题标题】:Ways to save django model using nested dictionary使用嵌套字典保存 django 模型的方法
【发布时间】:2015-12-31 01:35:34
【问题描述】:

我会尽量简化:

我有 2 个模型

from django.db import models


class OrderDetail(models.Model):
    product = models.CharField(max_length=100)
    price = models.CharField(max_length=50)


class Order(models.Model):
    url = models.CharField(max_length=255, unique=True)
    loaded_info = models.BooleanField(default=False)
    status = models.CharField(max_length=100, null=True)
    details = models.OneToOneField(OrderDetail)

我希望使用这样的字典来保存:

data = {
    "order": {
        "url": "http://stackoverflow.com/",
        "loaded_info": True,
        "status": "complete",
        "details": {
            "product": "Fresh answer",
            "price": "50 points"
        }
    }
}

我想做一些接近于:

order = Order(**data).save()

并使用一行保存OrderOrderDetail

【问题讨论】:

    标签: python django dictionary django-models


    【解决方案1】:

    看看https://docs.djangoproject.com/en/1.9/topics/serialization/

    在这种情况下,您可以执行以下操作:

    qs = Order.objects.select_related('details').get(pk=1)
    data = serializers.serialize("json", qs)
    

    【讨论】:

    • 是的,使用序列化程序生成 json 对输出数据有好处,但我想通过在 Order 模型中输入字典来将数据保存到 Order 和 OrderDetail。
    • 好的,我明白了。在这种情况下。当您说 Order(**data).save() 时,我认为您的想法是正确的。您必须覆盖 init 以检查关键字参数是否有效——但这就是 Form 所做的。你可以使用 OrderForm 吗?
    猜你喜欢
    • 2015-06-28
    • 2017-05-22
    • 1970-01-01
    • 2014-03-04
    • 2021-01-16
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多