2013-11-07 2 views
1

Привет, я создаю приложение для викторины в django. Я получил базу данных как формат json для использования в мобильном приложении. Полученный формат json:Django Можно ли совместить значения словаря?

{ 

    "quiz": [ 
     { 
      "category": "Python", 
      "section": "Programming", 
      "qtype": "Mcs", 
      "id": 1, 
      "level": 0 
     }, 
     { 
      "category": "Html", 
      "section": "Programming", 
      "qtype": "Mc", 
      "id": 2, 
      "level": 1 
     }, 
     { 
      "category": "Php", 
      "section": "Theory", 
      "qtype": "Yn", 
      "id": 3, 
      "level": 2 
     } 
    ] 

} 

Внутри списка есть три словаря. Я хочу преобразовать это в

{ 

    "quiz": [ 
     { 
      "category": "Python -> Programming -> Mcs -> level(0)" 
      "id": 1 

     }, 
     { 
      "category": "Html -> Programming -> Mc -> level(1)" 
      "id": 2 
     }, 
     { 
      "category": "Php -> Theory -> Yn -> level(2)" 
      "id": 3 
     } 
    ] 

} 

Можно ли преобразовать значения в строку? Если да, поделитесь своими идеями.

models.py

class Quiz(models.Model): 
    category = models.ForeignKey(Category) 
    section = models.ForeignKey(Section) 
    qtype = models.ForeignKey(QType)  
    LEVELS = (
     (0,'Beginner'), 
     (1,'Intermediate'), 
     (2,'Expert'),) 
    level=models.IntegerField(default=0, choices=LEVELS) 


class Category(models.Model): 
    name= models.CharField(max_length=100) 


class Section(models.Model): 
    name= models.CharField(max_length=100,unique=True) 


class QType(models.Model): 
    name= models.CharField(max_length=100,unique=True) 

views.py

def ajaxdashboard(request): 
    quizs=Quiz.objects.all() 
    n={'quiz': dict(id=x.id,category=x.category.name,section=x.section.name,qtype=x.qtype.name,level=x.level) for x in quizs]} 
    return HttpResponse(json.dumps(n), mimetype="application/json") 
+0

Почему бы не генерировать этот формат в первое место? У вас есть все значения прямо там. –

ответ

0

Конечно, просто сформировать строку в ваш взгляд:

n = { 
    'quiz': [ 
     { 
      'id': x.id, 
      'category': ' -> '.join([x.category.name, x.section.name, x.qtype.name, 'level({0})'.format(x.level)]) 
     } 
     for x in quizs 
    ] 
} 
Смежные вопросы