0

This my model

Driver Model

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

manufacture model

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)

Car model

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)

This My views

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")

i get {'nama': <Driver: Michael>}

but i wont get result like this {'nama': "Michael"}, How to get result like that, thanks for help.

Jack
  • 37
  • 5

1 Answers1

0

You must get the driver name with the following line :

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

Your new view :

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")

In addition to my answer, I want give you an advice :

You should named your foreign key like the model. Yes, in database it will be store the driver id, but when you use Django ORM, you don't get the id of driver but a Driver object.

So I advise you to rename id_driver by driver so you will use

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

but it's not required, just advise ;)

Samuel Dauzon
  • 10,744
  • 13
  • 61
  • 94
  • where `id_driver` come from?, my driver table has `id` , `named`, `ident` – Jack Feb 05 '16 at 08:30
  • Your **query** variable get records from **Car** model, so you get **Car** fields : **id_driver** and **f_idcar** – Samuel Dauzon Feb 05 '16 at 08:31
  • thanks but i get `u` in result `{'nama': u'Michael'}`, how to remove `u` – Jack Feb 05 '16 at 08:36
  • I'm not sure (I use only Python 3 from years) but you can try : **m_json['nama']= q.driver.named.decode('utf-8')** or **m_json['nama']= str(q.driver.named)** – Samuel Dauzon Feb 05 '16 at 08:42
  • If it helps you, you can read this for your problem : http://stackoverflow.com/questions/761361/suppress-the-uprefix-indicating-unicode-in-python-strings. Good luck, Django is a very fun framework :) – Samuel Dauzon Feb 05 '16 at 08:49