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 - Fatal编程技术网

Python Django,将字典保存到可能缺少键的模型

Python Django,将字典保存到可能缺少键的模型,python,django,Python,Django,我正在尝试将一系列词典保存到Django中的模型中。 字典应该在模型中创建一个唯一的条目,或者在唯一id已经存在的情况下更新现有条目。为此,我使用update_或_create()方法。但是,使用默认值传递dict值,如果缺少特定键,有时会导致错误。 如何处理可能丢失的密钥。 e、 g.实体名称并不总是存在 创建/更新条目: supplier, created = Supplier.objects.update_or_create(unique_id=supplier_detail['suppl

我正在尝试将一系列词典保存到Django中的模型中。 字典应该在模型中创建一个唯一的条目,或者在唯一id已经存在的情况下更新现有条目。为此,我使用update_或_create()方法。但是,使用默认值传递dict值,如果缺少特定键,有时会导致错误。 如何处理可能丢失的密钥。 e、 g.实体名称并不总是存在

创建/更新条目:

supplier, created = Supplier.objects.update_or_create(unique_id=supplier_detail['supplierId'],
                                                        defaults={
                                                            'name': supplier_detail['supplierName'],
                                                            'entity_name_1': supplier_detail[
                                                                'supplierNameRegistered1'],
                                                            'entity_name_2': supplier_detail[
                                                                'supplierNameRegistered2'],
                                                            'rating': supplier_detail['supplierRating']})
型号:

class Supplier(models.Model):
    unique_id = models.IntegerField(unique=True)
    name = models.CharField(max_length=255, unique=True)
    entity_name_1 = models.CharField(max_length=255, blank=True)
    entity_name_2 = models.CharField(max_length=255, blank=True)
    rating = models.CharField(max_length=255)


def __str__(self):
    return self.name
在视图中,替换为:

supplier_detail['supplierNameRegistered1']
与:

在视图中,替换为:

supplier_detail['supplierNameRegistered1']
与:


您正在使用以下方法从表单中提取值:

supplier_detail['fieldName']
如果未找到“fieldName”,这将导致键错误

解决方案:

supplier_detail.get('fieldName','')

您正在使用以下方法从表单中提取值:

supplier_detail['fieldName']
如果未找到“fieldName”,这将导致键错误

解决方案:

supplier_detail.get('fieldName','')

你犯了什么错误?KeyError?对于空白=True的字段,您可以执行供应商详细信息获取('field\u name',''),因此这会将空值设置为field,并且不会引发KeyError。您得到了什么错误?KeyError?对于空白=True的字段,您可以执行supplier\u detail.get('field\u name',''),因此这会将空值设置为field,并且不会引发KeyError。