2016-02-05 3 views
0

Это моя модельПолучить данные в формате JSON (Django)

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 

производство модель

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"}, как получить результат, как, что, спасибо за помощь.

ответ

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

В дополнение к моему ответу, я хочу дать вам совет:

Вы должны назвать свой внешний ключ, как модель. Да, в базе данных он будет хранить идентификатор драйвера, но когда вы используете Django ORM, вы не получите идентификатор драйвера, а Драйвер.

Так что советую вам переименовать id_driver от драйвера так что вы будете использовать

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

, но это не требуется, просто советую;)

+0

где 'id_driver' приходят из ?, мой водитель table имеет 'id',' named', 'ident' – Jack

+0

Ваша переменная ** query ** получает записи из ** Car ** model, поэтому вы получаете поля ** Car **: ** id_driver ** и ** f_idcar ** – jedema

+0

спасибо, но я получаю 'u' в результате' {'nama': u'Michael '} ', как удалить' u' – Jack

Смежные вопросы