Django,将字典保存到模型中,其中可能缺少键

时间:2015-10-23 18:24:07

标签: python django

我试图将一系列词典保存到Django中的模型中。 字典应该在模型中创建唯一条目,或者如果唯一ID已经存在则更新现有条目。要做到这一点,我使用update_or_create()方法。但是,使用默认值传入dict值,有时如果缺少特定键,这将导致错误。 如何处理可能丢失的密钥。 例如entity_name_X并不总是存在

创建/更新条目:

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

2 个答案:

答案 0 :(得分:4)

视图中的

替换:

supplier_detail['supplierNameRegistered1']

使用:

supplier_detail.get('supplierNameRegistered1','')

答案 1 :(得分:2)

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

supplier_detail['fieldName']

如果未找到“fieldName”,则会导致密钥错误。

解决方案:

supplier_detail.get('fieldName','')