使用json创建模型对象,其中所有键都不是模型的字段

时间:2018-11-11 20:28:53

标签: python django database django-models django-orm

我的模型如下:

class Person(models.Model):
    name = model.CharField(max_length = 255)
    mobile = model.IntegerField(null = True)
    city = model.CharField(max_length = 255)

现在我需要使用json创建一个模型对象,如下所示:

data = { "name" : "John", 
        "age" : 31, 
        "city" : "New York", 
        "mobile" : 1234432156,
        "address" : "xyz" }

在上述json中,namemobilecityPerson模型中的字段。我必须使用上述json创建模型对象。我是这样的:

Person.objects.create(**data)

但是它抛出一个错误,说'age' is invalid keyword argument for this function。我的理解是,由于模型中没有年龄字段,因此会引发错误。

如何使用这样的json创建模型实例,其中所有键都不是模型中的字段。

1 个答案:

答案 0 :(得分:1)

除非您知道数据与模型具有相同的“形状”(即具有相同的字段),否则最好将其明确写出:

Person.objects.create(name=data['name'], mobile=data['mobile'], city=data['city'])

(这是那explicit is better than implicit个时刻之一。)