获取JSON数据(Django)

时间:2016-02-05 08:23:28

标签: json django

这是我的模特

驱动程序模型

class Driver(models.Model):
    named = models.CharField(max_length=150)
    ident = models.CharField(max_length=100, null=True, blank=True)

    def __unicode__(self):
        return self.named

制造模型

class Carlcid(models.Model):
    namec = models.CharField(max_length=100)
    lc_id = models.CharField(max_length=100, null=True, blank=True)

    def __unicode__(self):
        return unicode(self.namec)

汽车模型

class Car(models.Model):
    f_idcar = models.ForeignKey(Carlcid, related_name='carlcd')
    id_driver = models.ForeignKey(Driver)

    def __unicode__(self):
        return unicode(self.f_idcar)

这是我的观点

def get_name_driver(request):
    name = request.GET.get('name')
    query = Car.objects.filter(f_idcar__namec=name)
    results=[]
    for q in query:
        m_json={}
        m_json['nama']= q.named
        results.append(m_json)
    return HttpResponse(results,"application/json")

我得到{'nama': <Driver: Michael>}

但是我不会得到这样的结果{'nama': "Michael"},如何得到这样的结果,谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您必须使用以下行获取驱动程序名称:

m_json['nama']= q.id_driver.named

您的新观点:

def get_name_driver(request):
    name = request.GET.get('name')
    query = Car.objects.filter(f_idcar__namec=name)
    results=[]
    for q in query:
        m_json={}
        m_json['nama']= q.id_driver.named
        results.append(m_json)
    return HttpResponse(results,"application/json")

除了我的回答,我想给你一个建议:

您应该像模型一样命名您的外键。是的,在数据​​库中它将存储驱动程序ID,但是当您使用Django ORM时,您不会获得驱动程序的ID,而是驱动程序对象。

所以我建议您通过驱动程序重命名 id_driver ,这样您就可以使用

m_json['nama']= q.driver.named

但不是必需的,只是建议;)