Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用嵌套字典保存django模型的方法_Python_Django_Dictionary_Django Models - Fatal编程技术网

Python 使用嵌套字典保存django模型的方法

Python 使用嵌套字典保存django模型的方法,python,django,dictionary,django-models,Python,Django,Dictionary,Django Models,我将尽可能简单地做到这一点: 我有两种型号 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, u

我将尽可能简单地做到这一点:

我有两种型号

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)
我用这样一个dict来保存:

data = {
    "order": {
        "url": "http://stackoverflow.com/",
        "loaded_info": True,
        "status": "complete",
        "details": {
            "product": "Fresh answer",
            "price": "50 points"
        }
    }
}
order = Order(**data).save()
我想做一些与以下内容相近的事情:

data = {
    "order": {
        "url": "http://stackoverflow.com/",
        "loaded_info": True,
        "status": "complete",
        "details": {
            "product": "Fresh answer",
            "price": "50 points"
        }
    }
}
order = Order(**data).save()
并使用一行代码保存
Order
OrderDetail

查看

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

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

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

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

是的,使用序列化程序生成json很适合输出数据,但我想通过将字典输入到订单模型中来将数据保存到Order和OrderDetail。好的,我明白了。那样的话。我认为当你说Order(**data).save()时,你的想法是正确的。您必须覆盖init以检查关键字参数是否有效——但表单就是这样做的。你能使用OrderForm吗?是的,使用序列化程序生成json很适合输出数据,但我想通过将字典输入到Order模型来将数据保存到Order和OrderDetail。好的,我明白了。那样的话。我认为当你说Order(**data).save()时,你的想法是正确的。您必须覆盖init以检查关键字参数是否有效——但表单就是这样做的。你能用订单吗?