Django模型到关联数组

时间:2016-09-14 02:53:56

标签: python django

有没有办法使用HttpResponse的循环将django模型转换为关联数组。

class Guest(models.Model):
    fname = models.CharField(max_length=200)
    mname = models.CharField(max_length=200, default="", blank=True, null=True)
    lname = models.CharField(max_length=200)
    gender = models.CharField(max_length=20, choices=gender_choices, default="")
    birth_date = models.DateField()
    address = models.TextField()
    phone = models.CharField(max_length=20)
    mobile = models.CharField(max_length=20, default="", blank=True, null=True)
    fax = models.CharField(max_length=20, default="", blank=True, null=True)
    email = models.CharField(max_length=200)
    id_type = models.CharField(max_length=200, default="", blank=True, null=True)
    id_number = models.CharField(max_length=200, default="", blank=True, null=True)

我的预期结果是这样的

{ 
    "fname" : "sample",
    "mname" : "sample",
    "lname" : "sample",
    ...
}

2 个答案:

答案 0 :(得分:1)

SomeModel.objects.filter(id=pk).values()[0]

你会得到

{ 
    "fname" : "sample",
    "mname" : "sample",
    "lname" : "sample",
    ...
}

我不鼓励__dict__的使用,因为你会获得你不关心的额外字段。

或者,如果您想要更加可自定义的内容以添加计算字段,则可以在模型中创建to_dict方法。

class Guest(models.Model):
     #fields....


    def get_dict(self):
        return { 
            "fname" : self.fname,
            "mname" : self.mname,
            "lname" : self.lname,
        }

使用它:instance.get_dict()

答案 1 :(得分:0)

guest = Guest.objects.get(pk=1)
print guest.__dict__