好的,这可行,但是我不得不对您的模型进行一些更改,所以也许我不明白您想要做什么。
带有名称字段的模型,我也将其添加到 json 中,因此需要放入一些数据,并且所有字段都可以留空以容纳不完整的数据。
class Member(models.Model):
name = models.CharField(max_length=30)
record = models.CharField(max_length=200, blank=True, null=True)
pub_date = models.DateTimeField('date', blank=True, null=True)
class Data(models.Model):
member = models.ForeignKey(Member)
dob = models.CharField(max_length=200, blank=True, null=True)
event = models.CharField(max_length=200, blank=True, null=True)
description = models.CharField(max_length=200, blank=True, null=True)
gender = models.CharField(max_length=200, blank=True, null=True)
def save(self, *args, **kwargs):
member, _ = Member.objects.get_or_create(name = self.name)
# can update member here with other fields that relate to them
self.member = member
super(Data, self).save(*args, **kwargs)
下面的代码将所有 json 值放入 Data 的实例中,然后在 Data 的 save 方法中创建一个新的 Member 实例。未使用的值将被简单地丢弃。
json = [{" Record": 12345,
"Name": "Joe",
"Event":" Initial task completed",
"TeamID": 12345,
"IndiviualID":"",
"Description":" Just a description",
"Date": "1/3/13 9:00"},{" Record": 5555,
"Name": "Jane",
"Event":" A different task completed",
"TeamID": 9999,
"IndiviualID":"",
"Description":" Just another description",
"Date": "1/13/13 6:00"}]
for item in json:
d = Data()
for k,v in item.iteritems():
setattr(d, k.lower(), v)
d.save()
结果是:
Member
1 Joe
2 Jane
Data
1 1 Initial task completed Just a description
2 2 A different task completed Just another description