2015-12-31 2 views
0

Я постараюсь сделать это так просто, как я могу:способов сохранить Джанго модели с помощью вложенного словаря

У меня есть 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) 

И я свистеть, чтобы сохранить с помощью Dict как это:

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

Я хотел бы сделать что-то близкое к:

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

И получить Order и OrderDetail сохраняются с использованием одной линии.

ответ

0

Посмотрите https://docs.djangoproject.com/en/1.9/topics/serialization/

В этом случае, вы могли бы сделать что-то вроде:

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

Да, генерировать JSON с помощью сериализаторы хороши для outputing данных, но я хочу, чтобы сохранить данные заказа и OrderDetail, просто вводя словарь в модель заказа. –

+0

Хорошо, я понимаю. В таком случае. Я думаю, что у вас есть правильная идея, когда вы произносите «Заказ» (** данные) .save(). Вам придется перезаписать init, чтобы проверить правильность аргументов ключевого слова, но это то, что делает форма. Можете ли вы использовать OrderForm? – fiacre

Смежные вопросы