Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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 创建具有嵌套orderDict的对象_Python_Django_Api_Python 3.x_Django Rest Framework - Fatal编程技术网

Python 创建具有嵌套orderDict的对象

Python 创建具有嵌套orderDict的对象,python,django,api,python-3.x,django-rest-framework,Python,Django,Api,Python 3.x,Django Rest Framework,my store_categories_数据有一个嵌套的orderDict,如下所示 store_categories_data OrderedDict([('product', OrderedDict([('image', OrderedDict([('image', <InMemoryUploadedFile: bag.jpg (image/jpeg)>)])), ('name_of_product', 'Ladies Pink Bag'), ('description',

my store_categories_数据有一个嵌套的orderDict,如下所示

store_categories_data 
OrderedDict([('product', OrderedDict([('image', OrderedDict([('image', <InMemoryUploadedFile: bag.jpg (image/jpeg)>)])), 
('name_of_product', 'Ladies Pink Bag'), ('description', 'description'), ('price', Decimal('1600')), ('active', True)])), 
('store_category', 'BAGS')])
型号.py

class Store(models.Model):
    merchant = models.ForeignKey(User)
    name_of_legal_entity = models.CharField(max_length=250)
    pan_number = models.CharField(max_length=20)
    registered_office_address = models.CharField(max_length=200)
    name_of_store = models.CharField(max_length=100)
    store_off_day = MultiSelectField(choices=DAY, max_length=7, default='Sat')
    store_categories = models.ManyToManyField('StoreCategory',blank=True)

class Product(models.Model):
    store = models.ForeignKey(Store)
    image = models.ForeignKey('ProductImage',blank=True,null=True)
    name_of_product = models.CharField(max_length=120)
    description = models.TextField(blank=True, null=True)
    price = models.DecimalField(decimal_places=2, max_digits=20)
    active = models.BooleanField(default=True)

class ProductImage(models.Model):
    image = models.ImageField(upload_to='products/images/')

    @property
    def imageName(self):
        return str(os.path.basename(self.image.name))


class StoreCategory(models.Model):
    product = models.ForeignKey(Product,null=True, on_delete=models.CASCADE,related_name="store_category")
    store_category = models.CharField(choices=STORE_CATEGORIES, default='GROCERY', max_length=10)

假设OrderedDict中的嵌套映射到关系数据库中的外键关系,则只需从内到外按顺序显式创建所有3条记录。像下面这样的东西应该足够让它走完剩下的路了

注意:使用
**
将dict解包到关键字args仅适用于较新版本的python>=
Python3.5

image = store_categories_data["product"].pop("image")
image_instance = Image(**image)
product = store_categories_data["product"]
product_instance = Product(image=image_instance, product=product)
store_category = store_categories_data['store_category']
store_category = StoreCategory(product=product_instance, store_category=store_category)

假设OrderedDict中的嵌套映射到关系数据库中的外键关系,则只需从内到外按顺序显式创建所有3条记录。像下面这样的东西应该足够让它走完剩下的路了

注意:使用
**
将dict解包到关键字args仅适用于较新版本的python>=
Python3.5

image = store_categories_data["product"].pop("image")
image_instance = Image(**image)
product = store_categories_data["product"]
product_instance = Product(image=image_instance, product=product)
store_category = store_categories_data['store_category']
store_category = StoreCategory(product=product_instance, store_category=store_category)

我收到以下错误类型错误:“product”是此函数的无效关键字参数。错误在product\u instance=product(image=image\u instance,product=product)行。我用您提供的代码更新了代码。现在,在尝试获取序列化程序
StoreCategorySerializer
上的字段
product
的值时,我收到一个错误'get AttributeError'。序列化程序字段的名称可能不正确,并且与
ManyRelatedManager
实例上的任何属性或键都不匹配。原始异常文本为:“ManyRelatedManager”对象在尝试发布时没有属性“product”。。由于上述错误,类别和产品未保存到数据库中。我是否应该像product_实例那样保存product_实例、image_实例和store_类别。save()就在实例化之后?我得到了以下错误类型错误:“product”是此函数的无效关键字参数。错误在product\u instance=product(image=image\u instance,product=product)行。我用您提供的代码更新了代码。现在,在尝试获取序列化程序
StoreCategorySerializer
上的字段
product
的值时,我收到一个错误'get AttributeError'。序列化程序字段的名称可能不正确,并且与
ManyRelatedManager
实例上的任何属性或键都不匹配。原始异常文本为:“ManyRelatedManager”对象在尝试发布时没有属性“product”。。由于上述错误,类别和产品未保存到数据库中。实例化后是否应立即保存product_实例、image_实例并像product_实例那样存储_类别。save()?