2015-11-25 2 views
0

Ну мой первый когда-либо вопрос был поставлен на удержание, так давайте попробуем еще раз ... Я настоящий новичок на все это Я создаю HR веб-приложение. Я могу поместить данные в db, я могу даже получить несколько частей для динамического заполнения выпадающих элементов. Теперь я пытаюсь получить элементы из модели, чтобы заполнить таблицу.Получить Джанго модельный ряд результатов

эти изделия будут взяты из приведенной ниже модели.

class Resource(models.Model): 

    title = models.CharField(max_length=10) 
    preferred_name = models.CharField(max_length=20) 
    last_name = models.CharField(max_length=30) 
    employstatus = models.CharField(max_length=20) 
    employer = models.CharField(max_length=30) 
    role = models.ForeignKey('Role') 
    location = models.ForeignKey('Location') 
    workphone = models.CharField(max_length=25, blank=True) 
    mobile_phone = models.CharField(max_length=15, blank=True) 
    email = models.EmailField(max_length=50) 
    notes = models.CharField(max_length=200, blank=True) 
    updated_by = models.CharField(max_length=30, blank=True) 
    updated_at = models.DateField(auto_now_add=True) 
    archived = models.BooleanField() 

Ниже приведена часть api, которую я пытаюсь написать, чтобы вынуть правильные детали.

В сущности, я пытаюсь показать эти данные в результате функции поиска, которая появится позже. Поиск будет по фамилии. Он покажет информацию ниже и используя pk в качестве идентификатора ссылки, я могу открыть ее, чтобы открыть html-страницу и вытащить все данные от этого человека и заполнить их страницу. Данные затем представляются js на таблицу html.

def searchres(request): 
    data = {'Resource':[]} 

    reslist = [] 
    for r in Resource.object.all(): 
      t = (r.pk, r.last_name, r.preferred_name, r.employer, r.location, r.role) 
      reslist.append(t) 

return HttpResponse(json.dumps(data), content_type='application/json') 

это таблица для заполнения

<table class="table table-hover table-striped table-bordered"id='serres' > 
    <thead> 
     <tr> 
    <th>Lastname</th> 
    <th>Preferred Name</th> 
    <th>Employer</th> 
    <th>Location</th> 
    <th>Role</th> 
    </tr> 
</thead> 
<tbody> 
    <tr onclick="document.location = '/Personnel/results.html?id=10';"> 
    </table> 
</div> 

Могу ли я иметь некоторую помощь с питона части получения словаря с необходимой информацией фасованного, так что я могу получить JS для заполнения таблицы, пожалуйста, ,

так что это должно выглядеть так. ???

def searchres(request): 
     data = {'Resource':[]} 
     data['Resource'] = reslist 

     reslist = [] 
     for r in Resource.object.all(): 
       t = (r.pk, r.last_name, r.preferred_name, r.employer, r.location, r.role) 
       reslist.append(t) 

     return HttpResponse(json.dumps(data), content_type='application/json') 
+1

Я думал, что у вас есть все, просто дайте свой «список реестров» в data dict, и вы закончили: «data ['Resource'] = reslist', правильно? Возможно, вам потребуется преобразовать какой-либо внешний ключ в строку, например 'location' и' role'. –

+1

В чем проблема с вашим текущим кодом (помимо того факта, что вы никогда не добавляете список реестров в data dict)? –

+0

Ну, как сказано выше, я очень новичок в этом, и это первое, что я когда-либо пытался сделать. это был скорее случай, когда я не понимал, почему то, что у меня было, не работает. И любой совет о том, как что-то сделать или сделать существующий код более упорядоченным, будет полезен, поэтому я могу улучшить свои знания и понимание того, как это работает, чтобы я снова не задавал лишних вопросов. – SpeedyH30

ответ

0

Пара разные вещи: первое, как сказал @Shang Ван, вы должны дать свой reslist в Словаре данных, прежде чем вернуть его как JSON. Не совсем понятно, как вы хотите добавить данные, потому что у вас есть единственный «ресурс», но это не имеет смысла. Я также не знаю, почему вы создаете промежуточный объект «reslist» вообще. Я собираюсь предположить, что вы хотите что-то вроде этого:

data = {"Resources":[]} 
for r in Resource.object.all(): 
     t={ 
      "pk":r.pk, 
      "last_name":r.last_name, 
      "preferred_name":r.preferred_name, 
      "employer":r.employer, 
      "location":r.location, 
      "role":r.role 
     } 
     data["Resources"].append(t) 

где «Ресурсы» список словарей ресурсов. Я думаю, что было бы более полезным для создания словаря в т по сравнению с кортежем, то, как вы делаете, потому что потом, когда вы используете объект JSON в JavaScript вы можете сделать:

data["Resources"][0]["last_name"] 

вместо

data["Resources"][0][1] 

Просто кажется более интуитивным для меня.

Во-вторых,

for r in Resource.object.all(): 

должен быть

for r in Resource.objects.all(): 

Обратите внимание на "s" для множественного числа "объектов".

+0

Ahh хорошо, что, вероятно, было бы потому, что я не на 100% на то, что я делаю, и куски битов, которые я нашел вместе, так что спасибо @Isaac Ray У меня все еще есть что сделать, это мой первый Django приложение. Я рад, что мой довольно длинный способ объяснить, что мне нужно, не заблудился в переводе. – SpeedyH30

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