我可以使用 JSON 数据在 Django 中添加新对象吗?

2024-01-30

我有一组已知的 JSON 数据,这些数据是从 Excel 文件中提取的,我想将其添加到我的 Django 应用程序中。格式如下:

[{" Record": 12345,
"Event":" Initial task completed",
"TeamID": 12345,
"IndiviualID":null,
"Description":" Just a description",
"Date": "1/3/13 9:00"},{" Record": 5555,
"Event":" A different task completed",
"TeamID": 9999,
"IndiviualID":null,
"Description":" Just another description",
"Date": "1/13/13 6:00"}]

假设我有一个名为 Member 的模型。如何从此 JSON 数据创建成员,而不必通过表单手动提交?希望这是有道理的。谢谢。

附录:我还必须澄清,Django 应用程序上的对象有一些附加变量,并丢弃其他变量,因此它不是完全匹配。什么算法有效?

UPDATE:(与电子表格数据不同,当前实现是数据的 2 模型版本。即每个成员都有一个名为 Data 的相关对象,该对象携带大多数变量。记录和日期是实际上位于成员对象内的唯一变量。所有其他是数据对象的一部分)

这是我的模型安排。

class Member(models.Model):
    def __unicode__(self):
        return self.record

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.boolean = True
    was_published_recently.short_description = 'Entered recently?'

    record = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date')


class Data(models.Model):
    def __unicode__(self):
        return self.dob

    member = models.ForeignKey(Member)  
    dob = models.CharField(max_length=200)
    event = models.CharField(max_length=200)
    description = models.CharField(max_length=200)
    gender = models.CharField(max_length=200)

好的,这可行,但是我不得不对您的模型进行一些更改,所以也许我不明白您想要做什么。

带有名称字段的模型,我也将其添加到 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   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以使用 JSON 数据在 Django 中添加新对象吗? 的相关文章

随机推荐